當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js crypto.generateKeyPairSync()用法及代碼示例


crypto.generateKeyPairSync()方法是加密模塊的內置應用程序編程接口,用於生成指定類型的新非對稱 key 對。例如,當前支持的 key 類型是RSA,DSA,EC,Ed25519,Ed448,X25519,X448和DH。此外,如果在此說明了選項的publicKeyEncoding或privateKeyEncoding,則此函數的作用就好像在其輸出上調用了keyObject.export()一樣。否則,鍵的特定部分將作為KeyObject返回。但是,建議使用強密碼短語將公用 key 編碼為“ spki”,將私鑰編碼為“ pkcs8”,以保持密碼短語的機密性。

用法:

crypto.generateKeyPairSync( type, options )

參數:該方法接受上述和以下所述的兩個參數:



  • type:它包含一個字符串,並且必須包含以下一種或多種算法:“ rsa”,“ dsa”,“ ec”,“ ed25519”,“ ed448”,“ x25519”,“ x448”或“ dh”。
  • options:它是對象類型。它可以包含以下參數:
    1. modulusLength:它包含一個數字。它是以位為單位的 key 大小,僅適用於RSA和DSA算法。
    2. publicExponent:它包含一個數字。它是RSA算法的公有 index 。默認情況下,其值為0x10001。
    3. divisorLength:它包含一個數字。它是DSA算法中q的大小(以位為單位)。
    4. namedCurve:它包含一個字符串。它是EC算法中要使用的曲線的名稱。
    5. prime:它擁有一個緩衝區。它是DH算法的主要參數。
    6. primeLength:它包含一個數字。它是DH算法的素數長度(以位為單位)。
    7. generator:它包含一個數字。它是DH算法的自定義生成器。其默認值為2。
    8. groupName:它保存字符串。這是DH算法的Diffie-Hellman組名。
    9. publicKeyEncoding:它包含一個字符串。
    10. privateKeyEncoding:它擁有一個對象。

返回值:它返回給定類型的新的非對稱 key 對,即,它返回一個對象,該對象包括一個私鑰和一個保存字符串,緩衝區和KeyObject的公鑰。

以下示例說明了Node.js中crypto.generateKeyPairSync()方法的使用:

範例1:

// Node.js program to demonstrate the 
// crypto.generateKeyPairSync() method 
  
// Including generateKeyPairSync from crypto module 
const { generateKeyPairSync } = require('crypto'); 
  
// Including publicKey and  privateKey from  
// generateKeyPairSync() method with its  
// parameters 
const { publicKey, privateKey } = generateKeyPairSync('ec', { 
  namedCurve:'secp256k1',    // Options 
  publicKeyEncoding:{ 
    type:'spki', 
    format:'der'
  }, 
  privateKeyEncoding:{ 
    type:'pkcs8', 
    format:'der'
  } 
}); 
  
// Prints asymmetric key pair 
console.log("The public key is:", publicKey); 
console.log(); 
console.log("The private key is:", privateKey);

輸出:

The public key is:<Buffer 30 56 30 10 06 07
2a 86 48 ce 3d 02 01 06 052b 81 04 00 0a 03 42
00 04 d9 88 53 5b 21 84 f8 73 14 c8 0b 31 e2 2a
28 a5 4c 8f 68 23 65 84 d9 fe 20 3f ... >

The 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 50 4a 87 c3 8c
968f 2b 41 f8 66 99 8a 95 ae 45 75 ... >

範例2:

// Node.js program to demonstrate the 
// crypto.generateKeyPairSync() method 
  
// Including generateKeyPairSync from crypto module 
const { generateKeyPairSync } = require('crypto'); 
  
// Including publicKey and  privateKey from  
// generateKeyPairSync() method with its  
// parameters 
const { publicKey, privateKey } = generateKeyPairSync('dsa', { 
  modulusLength:570, 
  publicKeyEncoding:{ 
    type:'spki', 
    format:'der'
  }, 
  privateKeyEncoding:{ 
    type:'pkcs8', 
    format:'der'
  } 
}); 
  
// Prints asymmetric key pair after encoding 
console.log("The public key is:",  
         publicKey.toString('base64')); 
console.log(); 
console.log("The private key is:", 
         privateKey.toString('base64'));

輸出:

The public key is: MIIBETCBwAYHKoZIzjgEATCBtAJJAM6084jk1Y6s/0sWQCs3k59AjV1GgAHb8gmB+Lxd/YVid+GySyss8tqhVQl49xho1DHoeJMNsVO6mcRqaSlSCPgmzqGaOvn2mQIdAKL5nGKJjDZF8Pb1SVvwWivhPShJiiHC2JjgrN8CSAqhzmg26/kEHYTZ3yNEGuguDhLvMAPdVG9pjTahLBytn8JQa3yQwLuPB4MzKfJ4d0pvKVZVnkMsatUe2ZkjnKoCjGlzwggd+QNMAAJJAMvsOBUjUKLhpkw4FZP7LIz0yYyOV1yYy84t8qSO42Yf6sNUfK6INnkFbpLHjFLcaDkFPqE5oRCIUqIVOhH0I7jNcGCN2m+ZWg==

The private key is: MIHnAgEAMIHABgcqhkjOOAQBMIG0AkkAzrTziOTVjqz/SxZAKzeTn0CNXUaAAdvyCYH4vF39hWJ34bJLKyzy2qFVCXj3GGjUMeh4kw2xU7qZxGppKVII+CbOoZo6+faZAh0AovmcYomMNkXw9vVJW/BaK+E9KEmKIcLYmOCs3wJICqHOaDbr+QQdhNnfI0Qa6C4OEu8wA91Ub2mNNqEsHK2fwlBrfJDAu48HgzMp8nh3Sm8pVlWeQyxq1R7ZmSOcqgKMaXPCCB35BB8CHQChh8yXsr/3dx3OdV6JmIWPcHe6dTHh6IOEIHer

在此,使用“ dsa”鍵類型。

參考: https://nodejs.org/api/crypto.html#crypto_crypto_generatekeypairsync_type_options




相關用法


注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 Node.js | crypto.generateKeyPairSync() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。