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 }

相关文章