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

更新于: 2022 年 1 月 17 日

167 次浏览

启动您的职业

通过完成课程获得认证

开始
广告