Node.js diffieHellman.getPrime() 方法
diffieHellman.getPrime()方法是加密模块中diffieHellman类的内置应用程序编程接口,用于获取 DiffieHellman (dh) 对象的素数。
句法:
diffieHellman.getPrime([encoding])
参数:该方法以编码为参数。
返回值:返回指定编码的 DiffieHellman 素数。如果未提供编码,则返回 Buffer,否则返回 String。
示例 1:
index.js
// Node.js program to demonstrate the
// diffieHellman.getPrime() method
// Destructure createDiffieHellman method from crypto
const { createDiffieHellman } = require('crypto');
// Instances of the DiffieHellman class
const dh = createDiffieHellman(512);
// Generate dh's Prime
// No encoding specified
// Return Buffer
let dhPrime = dh.getPrime()
console.log('\nIs Buffer return ( encoding not specified ) : ' +
Buffer.isBuffer(dhPrime)) // true
console.log('Return value :')
console.log(dhPrime)
// Encoding specified
// Return String
dhPrime = dh.getPrime('base64')
console.log('\nIs Buffer return ( encoding specified ): ' +
Buffer.isBuffer(dhPrime)) // true
console.log('Return value :')
console.log(dhPrime)
index.js
// Node.js program to demonstrate the
// diffieHellman.getPrime() 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();
// 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();
// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);
let isSymmetric =
aliceSecret.toString('hex') == bobSecret.toString('hex')
console.log( `Is Symmetric key generation
successful : ${ isSymmetric }` ); // true
使用以下命令运行index.js文件:
node index.js
输出:
Is Buffer return ( encoding not specified ) : true
Return value :
Is Buffer return ( encoding specified ): false
Return value :
2RBaIHAOnBlTHXS8k6yeHQBlyyt/E/21Z826Qmn8LExEXHKnRSYt1/
8u7sGprSG/xDqF/zTVe5r9vQ+O0Q5PAw==
示例 2:
index.js
// Node.js program to demonstrate the
// diffieHellman.getPrime() 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();
// 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();
// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);
let isSymmetric =
aliceSecret.toString('hex') == bobSecret.toString('hex')
console.log( `Is Symmetric key generation
successful : ${ isSymmetric }` ); // true
使用以下命令运行index.js文件:
node index.js
输出:
Is Symmetric key generation successful : true
参考: https://nodejs.org/api/crypto.html#crypto_diffiehellman_getprime_encoding