Node.js – diffieHellman.getPublicKey() 方法

该返回的Diffie-Hellman生成由通过编码指定公钥。如果编码被传递,它将返回一个字符串,否则它将返回一个缓冲区。diffieHellman.getPublicKey()

语法

diffieHellman.getPublicKey([encoding])

参数

  • encoding – 此参数指定返回值的编码。

示例 1

创建一个名为“publicKey.js”的文件并复制以下代码片段。创建文件后,使用命令“node publicKey.js”运行此代码。

// diffieHellman.getPublicKey() 演示示例

// 导入加密模块
const crypto = require('crypto')

// 初始化 diffieHellman
const dh = crypto.createDiffieHellman(512);

// 将默认 publicKey 设为 null
let publicKey = null

// 生成密钥
dh.generateKeys()

// 使用 base64 编码获取字符串
publicKey = dh.getPublicKey('base64')
console.log('Public Key (with base64 encoding): ', publicKey, '\n')

// 无需编码即可获取缓冲区
publicKey = dh.getPublicKey()
console.log('Public Key ( ithout encoding): ', publicKey, '\n')
输出结果
Public Key (with base64 encoding): ZY0wKH6d7Te8OPeIgHr7OlwSiH8d7MLGya9wopMgt5/liiKwFTgXsGE/07BQ6u98kUJJbr8cRgtD02D2I21xsg==

Public Key ( ithout encoding): <Buffer 65 8d 30 28 7e 9d ed 37 bc 38 f7 88 80 7a fb 3a 5c 12 88 7f 1d ec c2 c6 c9 af 70 a2 93 20 b7 9f e5 8a 22 b0 15 38 17 b0 61 3f d3 b0 50 ea ef 7c 91 42 ... >

示例 2

让我们再看一个例子。

// diffieHellman.getPublicKey() 演示示例

// 导入加密模块
const crypto = require('crypto')

// 初始化 diffieHellman
const a = crypto.createDiffieHellman(512);
const b = crypto.createDiffieHellman(
   a.getPrime(), a.getGenerator() );

// 生成密钥
a.generateKeys()
b.generateKeys()

// 生成公钥
let keyA = a.getPublicKey('base64')

// 为 b 生成公钥
let keyB = b.getPublicKey('base64')

// 计算秘密
let secretA = a.computeSecret(keyB, 'base64', 'base64')
let secretB = b.computeSecret(keyA, 'base64', 'base64')

if(secretA === secretB)
   console.log('Symmetric key A:', secretA)
   console.log('Symmetric key B:', secretB)
输出结果
Symmetric key A: shrRZLrIF/Uz52T4XCjALAuRgJ+1luVSesG2Q4bhW2+59qcWu5SI8P3XjSUXRMIcvIGQc2gzv/ENirozxU+iwA==
Symmetric key B: shrRZLrIF/Uz52T4XCjALAuRgJ+1luVSesG2Q4bhW2+59qcWu5SI8P3XjSUXRMIcvIGQc2gzv/ENirozxU+iwA==