Node.js – diffieHellman.getGenerator() 方法
node.jsserver side programmingprogramming
diffieHellman.getGenerator() 方法返回指定编码的 Diffie-Hellman 生成器。如果指定了编码,则返回字符串;否则,返回缓冲区。
语法
diffieHellman.getGenerator([encoding])
参数
encoding - 此参数指定返回值的编码。
示例 1
创建一个名为"generator.js"的文件,并复制以下代码。创建文件后,使用命令"node generator.js"运行此代码,如下例所示:
// diffieHellman.getPrime() 演示示例 // 从 crypto 模块导入 cryptoDiffieHellman const { createDiffieHellman } = require('crypto'); // 初始化 diffieHellman 对象 const dh = createDiffieHellman(512); // 生成 DiffieHellman 的生成器 // 定义生成器 let dhGenerator = dh.getGenerator() console.log('Buffer(未指定编码时): ', 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 的 generatorKeys const keyA = a.generateKeys(); // 为 b 生成密钥 const b = createDiffieHellman( primeA, generatorA ); // 为 b 生成素数 const primeB = b.getPrime(); // 生成 b 的生成器 const generatorB = b.getGenerator() // 生成 b 的 generatorKeys 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 }