Node.js - diffieHellman.computeSecret() 方法
diffieHellman.computeSecret() 用于使用其他方的公钥计算共享密钥,并返回计算出的共享密钥。suppliedKey 使用指定的 inputEncoding 进行解释,而密钥使用指定的 outputEncoding 进行编码。如果未指定 inputEncoding,则其他 publicKey 预计是一个缓冲区,DataView。
语法
diffieHellman.computeSecret(otherPublicKey, [inputEncoding], [outputEncoding])
参数
otherPublicKey – 这是用于计算密钥的公钥。
inputEncoding – 此编码用于解释所提供的密钥。
outputEncoding – 此编码用于对计算出的机密值进行编码。
示例 1
创建一个名为 "computeSecret.js" 的文件,复制以下代码段。创建文件后,使用命令 "node computSecret.js" 运行此代码,如下面的示例所示 −
// diffieHellman.computeSecret() Demo Example
// Importing the crypto module
const crypto = require('crypto')
// Creating diffieHellman instances
const a = crypto.createDiffieHellman('modp15');
const b = crypto.createDiffieHellman('modp15');
// Creating keys using base64
const keyA = a.generateKeys('base64');
// Creating key using hex
const keyB = b.generateKeys('hex');
// Creating secret using diffieHellman
const secretA = a.computeSecret(keyB, 'hex');
// Creating secret using diffieHellman
const secretB = b.computeSecret(keyA, 'base64');
// Checking if the resultant secrets are equal
const isSymmetric = secretA.equals(secretB)
if ( isSymmetric )
console.log('Symmetric key A: ', secretA)
console.log('Symmetric key B: ', secretB)
输出
C:\home
ode>> node computeSecret.js Symmetric key A: <Buffer 43 4d aa ec dc c6> Symmetric key B: <Buffer 43 4d aa ec dc c6>
示例 2
我们来看一个例子 −
// diffieHellman.computeSecret() Demo Example
// Importing the crypto module
const crypto = require('crypto')
// Creating diffieHellman instances
const a = crypto.createDiffieHellman(512);
const b = crypto.createDiffieHellman(a.getPrime(), a.getGenerator());
// Creating keys using base64
const keyA = a.generateKeys('base64');
const keyB = b.generateKeys('base64');
// Creating secret using diffieHellman
const secretA = a.computeSecret(keyB, 'base64', 'hex');
const secretB = b.computeSecret(keyA, 'base64', 'hex');
// Checking if the resultant secrets are equal
if( secretA === secretB )
console.log(`Symmetric key A: ${ secretA }`)
console.log(`Symmetric key B: ${ secretB }`)输出
C:\home
ode>> node computeSecret.js Symmetric key A: 44badc3e4ad43d7c887190104a63f0b68222678da1cae92b54a146c243f7b354061e958e59aebce43f72016123bd133d66135e3341ce47a18a1d7a07c86c8ddb Symmetric key B: 44badc3e4ad43d7c887190104a63f0b68222678da1cae92b54a146c243f7b354061e958e59aebce43f72016123bd133d66135e3341ce47a18a1d7a07c86c8ddb
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP