Node.js – diffieHellman.getGenerator() 方法
该方法以指定的编码返回Diffie-Hellman生成器。如果传递编码,则返回字符串,否则返回缓冲区。diffieHellman.getGenerator()
语法
diffieHellman.getGenerator([encoding])
参数
encoding-此参数指定返回值的编码。
示例1
创建一个名为“generator.js”的文件并复制以下代码。创建文件后,使用命令“nodegenerator.js”运行此代码,如下例所示:
//diffieHellman.getPrime()演示示例
//从crypto模块导入cryptoDiffieHellman
const { createDiffieHellman } = require('crypto');
//初始化diffieHellman对象
const dh = createDiffieHellman(512);
//生成DiffieHellman的生成器
//定义生成器
let dhGenerator = dh.getGenerator()
console.log('Buffer (when encoding is not specified) : ', dhGenerator)
//编码指定
//返回字符串
dhGenerator = dh.getGenerator('base64')
console.log('String (when encoding is specified) : ', dhGenerator)输出结果Buffer (when encoding is not specified) : <Buffer 02> String (when encoding is specified) : Ag==
示例2
让我们再看一个例子。
//diffieHellman.getGenerator()演示示例
//从crypto模块导入cryptoDiffieHellman
const { createDiffieHellman } = require('crypto');
//为“a”生成密钥
const a = createDiffieHellman(512);
//为“a”生成素数
const primeA = a.getPrime();
//生成a的生成器
const generatorA = a.getGenerator()
//生成a的生成器Keys
const keyA = a.generateKeys();
//为b生成密钥
const b = createDiffieHellman( primeA, generatorA );
//为b生成素数
const primeB = b.getPrime();
//生成b的生成器
const generatorB = b.getGenerator()
//生成b的生成器Keys
const keyB = b.generateKeys();
//交换秘密
const secretA = a.computeSecret(keyB);
const secretB = b.computeSecret(keyA);
let isSymmetric =
secretA.toString('hex') == secretB.toString('hex')
console.log('Are keys Symmetric : ${ isSymmetric }')输出结果Are keys Symmetric : ${ isSymmetric }