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

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

Node.js の crypto.createECDH() メソッドは、引数として渡した曲線名(curveName)で指定される事前定義済みの楕円曲線をもとに、ECDH(Elliptic Curve Diffie-Hellman)オブジェクトを生成します。ECDH は、通信当事者間で共有秘密鍵を安全に確立するための鍵交換プロトコルであり、暗号化通信の基盤として広く利用されています。利用可能な曲線名の一覧は、crypto.getCurves() を呼び出すことで取得できます。なお、このメソッドは crypto モジュールの一部です。

構文

crypto.createECDH(curveName)

パラメータ

このメソッドが受け取るパラメータは以下のとおりです。

  • curveName – ECDH の作成に使用する楕円曲線の名前を文字列で指定します。ここで指定した名前に対応する事前定義済みの曲線が使われます。

使用例1:鍵ペアを生成して表示する

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

node createECDH.js

createECDH.js

// ECDH を生成する Node.js デモプログラム

// crypto モジュールを読み込む
const crypto = require('crypto');

// createECDH() メソッドを呼び出す
const curve = crypto.createECDH('secp521r1');

// 曲線の鍵を出力する
console.log(curve.generateKeys());

出力

C:\home\node>> node createECDH.js
<Buffer 04 00 be c4 3b eb cc ea 33 84 31 b0 7d 8b 9f e6 5b e0 6e 3a 40 21 49
f0 20 9f 92 33 cf 32 d7 a7 f1 df 90 82 9b fe 8f 7b 98 5b 7d 1a ee c6 ae b1 bd
1a ... >

generateKeys() を呼び出すと、指定した曲線(この例では secp521r1)に基づいて公開鍵と秘密鍵のペアが生成され、Buffer 形式で返されます。

使用例2:公開鍵と秘密鍵を個別に取得する

続いて、もう少し実践的な例を見てみましょう。

// ECDH を生成する Node.js デモプログラム

// crypto モジュールを読み込む
const crypto = require('crypto');

// createECDH() メソッドを呼び出す
const curve = crypto.createECDH('secp521r1');
curve.generateKeys();

// 公開鍵と秘密鍵をそれぞれ出力する
console.log("Public Key: ", curve.getPublicKey());
console.log("Private Key: ", curve.getPrivateKey());

出力

C:\home\node>> node cipherUpdate.js
Public Key: <Buffer 04 01 10 f7 fb d9 d7 f9 70 ba 6e 59 42 77 b6 1b 28 21 f1
3f ac 43 28 72 c6 33 b5 89 d3 77 6e 5a ea 8a 8a a1 27 a7 ab f1 b1 ea 41 ac dc
c5 09 83 01 48 ... >
Private Key: <Buffer 01 d8 c4 d9 df 5c c8 54 e2 1f 82 94 ba 9c cd bc 88 3a e5
88 aa bd c8 2b 5c e9 f4 59 81 0b ae 18 f4 bf 21 43 56 74 55 d8 1d e6 b8 5f d8
e7 e2 52 ad 03 ... >

まとめ

crypto.createECDH() を使えば、楕円曲線ベースの鍵交換を簡単に実装できます。generateKeys() で鍵ペアを生成し、getPublicKey()getPrivateKey() でそれぞれの鍵を取得できます。さらに、相手の公開鍵と自分の秘密鍵から共有秘密を計算する computeSecret() メソッドと組み合わせることで、安全な暗号化通信の仕組みを構築することが可能です。

  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() 引数(パラメータ) このメソッドは、サポートされているハッシュアルゴ