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
广告