Node.js diffieHellman.generateKeys() 方法

Node.js diffieHellman.generateKeys() 方法

diffieHellman.generateKeys() 方法是 crypto 模块中 DiffieHellman 类的内置应用程序接口,用于生成 DiffieHellman(dh)对象的私钥和公钥值。

语法:

diffieHellman.generateKeys([encoding])

参数: 这个方法以编码作为参数。

返回值: 以指定的编码返回DiffieHellman公钥。如果没有提供编码,则返回Buffer,否则返回String。

示例1:

index.js

// Node.js program to demonstrate the 
// diffieHellman.generateKeys() method 
  
// Destructure createDiffieHellman method from crypto 
const { createDiffieHellman } = require('crypto'); 
  
// Instances of the DiffieHellman class 
const dh = createDiffieHellman(512); 
  
// Generate DH's Key 
  
// No encoding specified 
// Return Buffer 
let dhKey = dh.generateKeys() 
console.log('\nIs Buffer return ( encoding not specified ) : ' +  
Buffer.isBuffer( dhKey ) ) // true 
console.log('Return value :') 
console.log( dhKey ) 
  
// Encoding specified  
// Return String 
dhKey = dh.generateKeys('base64') 
console.log('\nIs Buffer return ( encoding specified ): ' +  
Buffer.isBuffer( dhKey ) ) // true 
console.log('Return value :') 
console.log( dhKey )

使用以下命令运行 index.js 文件:

node index.js

输出:

Is Buffer return ( encoding not specified ) : true
Return value :
<Buffer 6d 17 8c ea 74 27 5b f4 86 f8 72 f9 73 93 19 8b 27 90 86 e7 
d8 1b 1c 50 b2 65 9a 66 bc 2c 4d 49 f6 46 3e b5 1c 09 e5 ef 5c b9 8e 
fc 65 95 aa 40 3a 6c ... 14 more bytes>

Is Buffer return ( encoding specified ): false
Return value :
bReM6nQnW/SG+HL5c5MZiyeQhufYGxxQsmWaZrwsTUn2Rj61HAnl71y5jvxllapAO
mwITlF8/1Z67Nt7Lc8tqA==

示例2:

index.js

// Node.js program to demonstrate the 
// diffieHellman.generateKeys() method 
  
// Destructure createDiffieHellman method from crypto 
const { createDiffieHellman } = require('crypto'); 
  
// Generate Alice's keys... 
const alice = createDiffieHellman(512); 
  
// Generate Alices's Prime 
const alicePrime = alice.getPrime(); 
  
// Generate Alice's Generator 
const aliceGenerator =  alice.getGenerator() 
  
// Generate Alice's Key 
const aliceKey = alice.generateKeys('base64'); 
  
// Generate Bob's keys... 
const bob = createDiffieHellman( alicePrime, aliceGenerator ); 
  
// Generate Bobs's Prime 
const bobPrime = bob.getPrime(); 
  
// Generate Bob's Generator 
const bobGenerator =  bob.getGenerator() 
  
// Generate Bob's Key 
const bobKey = bob.generateKeys('base64'); 
  
// Exchange and generate the secret... 
const aliceSecret = alice.computeSecret(bobKey, 'base64', 'base64'); 
const bobSecret = bob.computeSecret(aliceKey, 'base64', 'base64'); 
  
let isSymmetric = aliceSecret == bobSecret 
  
// true 
console.log( `Is Symmetric key generation successful : ${ isSymmetric }` );

使用以下命令运行 index.js 文件:

node index.js

输出:

Is Symmetric key generation successful : true

参考: https://nodejs.org/api/crypto.html#crypto_diffiehellman_generatekeys_encoding

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程