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

Node.jsのcrypto.generateKeyPair()メソッド


crypto.generateKeyPair()を使用して、指定されたタイプの新しい非対称キーペアを生成できます。キーペアを生成するためにサポートされているタイプは、RSA、DSA、EC、Ed25519、Ed448、X25519、X448、およびDHです。この関数は、publicKeyEncodingまたはprivateKeyEncodingが指定されている場合、その結果に対してkeyObject.exportが呼び出されたかのように動作します。指定されていない場合、keyObjectのそれぞれの部分が返されます。

構文

crypto.generateKeyPair(type, options, callback)

パラメータ

上記のパラメータは以下のように記述されます-

  • タイプ –キーを生成する必要がある文字列タイプを保持します。サポートされているタイプは、RSA、DSA、EC、Ed25519、Ed448、X25519、X448、およびDHです。

  • オプション –次のパラメータを保持できます-

    • ModulusLength –これは、タイプ(RSA、DSA)のキーサイズをビット単位で保持します。

    • publicExponent –これは、RSAアルゴリズムの公開指数値を保持します。

      デフォルト値は– 0x10001

    • divisorLength –これはqのサイズをビット単位で保持します。

    • namedCurve –これは使用される曲線の名前を保持します。

    • プライム –これは、DHなどのタイプの主要なパラメーターを保持します。

    • PrimeLength –これはプライム長をビット単位で保持します。

    • ジェネレーター –このパラメーターは、カスタムジェネレーターの値を保持します。デフォルト:2。

    • groupName –これはDHアルゴリズムのdiffe-hellmanグループ名です。

    • publicKeyEncoding –これは公開鍵エンコーディングの文字列値を保持します。

    • privateKeyEncoding -これは秘密鍵エンコーディングの文字列値を保持します。

  • コールバック -コールバックには次のパラメータがあります-

    • エラー –これはエラーのタイプを保持します。

    • publicKey –これは公開鍵の値を保持します。

    • PrivateKey –これは秘密鍵の値を保持します。

(generateKeyPair.js)という名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すようにこのコードを実行します-

node generateKeyPair.js

generateKeyPair.js

// Node.js program to demonstrate the flow of crypto.generateKeyPair() method

// Importing generateKeyPair from crypto module
const { generateKeyPair } = require('crypto');

// Calling generateKeyPair() method with the below parameters
generateKeyPair('rsa', {
   modulusLength: 530, // options
   publicExponent: 0x10101,
   publicKeyEncoding: {
      type: 'pkcs1',
      format: 'der'
   },
   privateKeyEncoding: {
      type: 'pkcs8',
      format: 'der',
      cipher: 'aes-192-cbc',
      passphrase: 'Welcome to TutorialsPoint!'
   }
}, (err, publicKey, privateKey) => { // Callback function
   if(!err)
   {
      // This will print the asymmetric key pair
      console.log("Public Key is: ", publicKey);
      console.log();
      console.log("Private Key is: ", privateKey);
   }
   else
   {
      // Prints error if any
      console.log("Errr is: ", err);
   }
});

出力

C:\home\node>> node generateKeyPair.js
Public Key is: <Buffer 30 4a 02 43 03 43 66 5a e1 25 0d d8 c4 fe e3 a0 77 ea
e4 e7 20 78 8c eb a7 a4 f6 85 f0 45 fc 7b 46 d7 3e 5e e3 8b a1 16 e5 59 e8 79
69 65 54 00 6c 89 ... >

Private Key is: <Buffer 30 82 01 cd 30 57 06 09 2a 86 48 86 f7 0d 01 05 0d 30
4a 30 29 06 09 2a 86 48 86 f7 0d 01 05 0c 30 1c 04 08 1e a2 b4 ea ce 50 0e 80
02 02 08 00 30 0c ... >

もう1つの例を見てみましょう。

// Node.js program to demonstrate the flow of crypto.generateKeyPair() method

// Importing generateKeyPair from crypto module
const { generateKeyPair } = require('crypto');

// Calling generateKeyPair() method with the below parameters
generateKeyPair('ec', {
   namedCurve: 'secp256k1', // Options
   publicKeyEncoding: {
      type: 'spki',
      format: 'der'
   },
   privateKeyEncoding: {
      type: 'pkcs8',
      format: 'der'
   }
},(err, publicKey, privateKey) => { // Callback function
   if(!err)
   {
      // This will print the asymmetric key pair
      console.log("Public Key is: ", publicKey);
      console.log("Public Key in hex is: ", publicKey.toString('hex'));
      console.log();
      console.log("Private Key is: ", privateKey);
      console.log("Private Key in hex is: ",
      privateKey.toString('hex'));
   }else{
      // Prints error if any
      console.log("Errr is: ", err);
   }
});
がある場合はエラーを出力します

出力

C:\home\node>> node generateKeyPair.js
Public Key is: <Buffer 30 56 30 10 06 07 2a 86 48 ce 3d 02 01 06 05 2b 81 04
00 0a 03 42 00 04 d1 d0 0b 7e f7 e3 3e cf d8 08 2a 20 a8 5e 52 be ca 56 29 42
c3 6b 9f d3 15 7c ... >
Public Key in hex is:
3056301006072a8648ce3d020106052b8104000a03420004d1d00b7ef7e33ecfd8082a20a85e52
beca562942c36b9fd3157cf98b03b41ecc4b4e13b4cd5cd35814383ee76afabaf794faf6f31bc8
c9f7007748f74767677c

Private Key is: <Buffer 30 81 84 02 01 00 30 10 06 07 2a 86 48 ce 3d 02 01 06
05 2b 81 04 00 0a 04 6d 30 6b 02 01 01 04 20 05 01 a1 d5 80 f7 65 56 6f a3 3a
05 d3 6d ec 82 ad ... >
Private Key in hex is:
308184020100301006072a8648ce3d020106052b8104000a046d306b02010104200501a1d580f7
65566fa33a05d36dec82ad590ff8697d182ddca6b881acfbadd1a14403420004d1d00b7ef7e33e
cfd8082a20a85e52beca562942c36b9fd3157cf98b03b41ecc4b4e13b4cd5cd35814383ee76afa
baf794faf6f31bc8c9f7007748f74767677c

  1. Node.jsのcrypto.privateDecrypt()メソッド

    crypto.privateDecrypt()は、crypto.publicEncrypt()メソッドで対応する公開鍵を使用して以前に暗号化されたパラメーターで渡された秘密鍵を使用して、指定されたデータコンテンツを復号化するために使用されます。 構文 crypto.privateDecrypt(privateKey、buffer) パラメータ 上記のパラメータは以下のように記述されます- キー –オブジェクト、文字列、バッファ、またはKeyObjectの5種類のデータを含めることができます。 oaepHash –このフィールドには、OAEPパディングとMGF1に使用されるハ

  2. Node.jsのcrypto.getHashes()メソッド

    crypto.getHashes()メソッドは、サポートされているすべてのハッシュアルゴリズムの名前を含む配列を返します。暗号パッケージには、使用できるハッシュアルゴリズムの膨大なリストがあります。ただし、最も使用されている暗号化アルゴリズムは「MD5 –メッセージダイジェストアルゴリズム5」です。 構文 crypto.getHashes() パラメータ すべてのハッシュアルゴリズムのリストを返すためです。入力する必要はありません。 例 getHashes.jsという名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すよ