JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

Node.jsのcrypto.createDiffieHellman()メソッド徹底解説!構文・パラメータ・実行例まとめ

crypto.createDiffieHellman(primeLength, [generator]) メソッドは、指定されたビット長の素数とジェネレーターを使用して、Diffie-Hellman鍵交換オブジェクトを作成するためのNode.js暗号化モジュール(crypto)のAPIです。generatorが省略された場合、デフォルト値として「2」が設定されます。

ディフィー・ヘルマン鍵交換は、事前に共有秘密情報を持たない通信者同士でも、盗聴者から守られた安全な通信経路を通じて共通鍵を確立できる公開鍵暗号方式のプロトコルです。本メソッドを使うことで、この鍵交換に必要なオブジェクトを簡単に生成できます。

構文

crypto.createDiffieHellman(primeLength, [generator])

パラメータ

各パラメータの詳細は以下の通りです。

  • primeLength – 生成する素数のビット長を指定します。入力値はnumber型です。

  • generator – 鍵交換オブジェクトを生成するためのジェネレーターを指定します。デフォルト値は「2」です。

実行例1:基本的な使い方

まず「index.js」という名前のファイルを作成し、以下のコードをコピー&ペーストしてください。ファイル作成後、次のコマンドでコードを実行します。

node index.js

index.js

// crypto.createDiffieHellman(primeLength, [generator]) デモ例

// cryptoモジュールのインポート
const crypto = require('crypto');

// 変数primeLengthを初期化
var primeLength = 29;

// DiffieHellman鍵交換オブジェクトを作成
var exchangeKey = crypto.createDiffieHellman(primeLength);

// 鍵を出力
console.log("DiffieHellman key is: " + exchangeKey.generateKeys('base64'));

出力結果

C:\home\node>> node index.js
DiffieHellman key is: BaRoaA==

実行例2:generatorを明示的に指定する

続いて、generatorに「3」を明示的に指定した例を見てみましょう。また、生成した公開鍵と秘密鍵もそれぞれ出力しています。

// crypto.createDiffieHellman(primeLength, [generator]) デモ例

// cryptoモジュールのインポート
const crypto = require('crypto');

// 変数primeLengthを初期化
var primeLength = 29;
var generator = 3; // デフォルト値は2

// DiffieHellman鍵交換オブジェクトを作成
var exchangeKey = crypto.createDiffieHellman(primeLength, generator);

// 鍵を出力(16進数形式)
console.log("DiffieHellman keys are: " + exchangeKey.generateKeys('hex'));

// 公開鍵と秘密鍵を表示
console.log("Public Key is: ",
    exchangeKey.getPublicKey('hex'));
console.log("Private Key: ",
    exchangeKey.getPrivateKey('hex'));

出力結果

C:\home\node>> node index.js
DiffieHellman keys are: 1a21670d
Public Key is: 1a21670d
Private Key: 0d4a1a3c

まとめ

crypto.createDiffieHellman()メソッドを使えば、素数のビット長(primeLength)とジェネレーター(generator)を指定するだけで、Diffie-Hellman鍵交換用のオブジェクトを簡単に作成できます。generateKeys()やgetPublicKey()、getPrivateKey()といったメソッドと組み合わせることで、鍵の生成や取得も柔軟に行えますので、セキュアな通信を実装する際にぜひ活用してみてください。

  1. Node.jsのcrypto.privateDecrypt()メソッドの使い方を徹底解説

    crypto.privateDecrypt()メソッドは、crypto.publicEncrypt()メソッドを使って対応する公開鍵で事前に暗号化されたデータを、パラメータとして渡された秘密鍵を用いて復号するために使用されます。RSA暗号方式などの公開鍵暗号システムにおいて、安全なデータ復号を実現するための重要なAPIです。 構文 crypto.privateDecrypt(privateKey, buffer) パラメータ このメソッドが受け取る各パラメータの詳細は以下のとおりです。 privateKey(秘密鍵) – 復号に使用する秘密鍵を指定します。Object、String、Bu

  2. Node.jsのcrypto.getHashes()メソッドとは?使い方とサポートされるハッシュアルゴリズム一覧の取得方法

    crypto.getHashes()メソッドは、Node.jsでサポートされているすべてのハッシュアルゴリズムの名前を配列形式で返します。cryptoモジュールには非常に多くのハッシュアルゴリズムが用意されており、その中でも歴史的によく使われてきたのが「MD5(Message-Digest Algorithm 5)」です。ただし、MD5には衝突耐性の脆弱性があるため、現在ではセキュリティ用途にはSHA-256やSHA3系など、より強力なアルゴリズムを使うことが推奨されています。 構文 crypto.getHashes() 引数(パラメータ) このメソッドは、サポートされているハッシュアルゴ