diffieHellman.computeSecret() 方法是加密模塊中 DiffieHellman 類的內置應用程序編程接口,用於計算 DiffieHellman (dh) key 。
用法:
diffieHellman.computeSecret(otherPublicKey[, inputEncoding][, outputEncoding])
參數:此方法接受以下參數。
- otherPublicKey:該方法以對方的公鑰作為第一個參數。
- inputEncoding:指定otherPublicKey 的編碼。如果未提供 otherPublicKey,則預期為 Buffer、TypedArray 或 DataView。
- outputEncoding:如果提供,則返回 String,否則返回 Buffer。
返回值:此方法返回 diffieHellman 共享 key 。
範例1:
index.js
// Node.js program to demonstrate the
// diffieHellman.computeSecret() method
const crypto = require('crypto')
// Instance of diffieHellman class...
const alice = crypto.createDiffieHellman(512);
const bob = crypto.createDiffieHellman(
alice.getPrime(), alice.getGenerator());
// Generate otherPublicKey
// Pass 'base64' as encoding parameter
const aliceKey = alice.generateKeys('base64');
const bobKey = bob.generateKeys('base64');
// Exchange and generate the secret...
// inputEncoding = 'base64' because otherPublicKey
// is 'base64' encoded
// Return value should be 'hex' encoded because
// outputEncoding = 'hex'
const aliceSecret = alice.computeSecret(bobKey, 'base64', 'hex');
const bobSecret = bob.computeSecret(aliceKey, 'base64', 'hex');
if( aliceSecret === bobSecret )
console.log(`Symmetric key:${ aliceSecret }`)
使用以下命令運行index.js文件:
node index.js
輸出:
Symmetric key:da884ccb0e24bf7e748f66998550b f21f96b887e1f936478cdbc63b7806bd2403fd3aa28e5dbf58 bbabeb6f829dd86453eb0985b5ff593fcf7a8e1da20256b2a
範例2:再舉一個不提供 outputEncoding 的例子。
index.js
// Node.js program to demonstrate the
// diffieHellman.computeSecret() method
const crypto = require('crypto')
// Instances of diffieHellman class
const alice = crypto.createDiffieHellman('modp15');
const bob = crypto.createDiffieHellman('modp15');
// Pass 'base64' as encoding parameter
const aliceKey = alice.generateKeys('base64');
// Pass 'hex' as encoding parameter
const bobKey = bob.generateKeys('hex');
// Pass inputEncoding = 'hex' because Bob's key
// 'hex' encocded
// No outputEncoding provided
// Return Buffer
const aliceSecret = alice.computeSecret(bobKey, 'hex');
// Pass inputEncoding = 'base64' because Alice's
// key 'base64' encocded
// No outputEncoding provided
// Return Buffer
const bobSecret = bob.computeSecret(aliceKey, 'base64');
const isSymmetric = aliceSecret.equals(bobSecret)
if ( isSymmetric )
console.log('Symmetric key:', aliceSecret)
使用以下命令運行index.js文件:
node index.js
輸出:
Symmetric key: <Buffer 6d 1a 6c 00 34 6c>
範例3:另一個沒有提供 inputEncoding 的例子。將 inputEncoding 傳遞為 null。
文件名:index.js
Javascript
// Node.js program to demonstrate the
// diffieHellman.computeSecret() method
const crypto = require('crypto')
// Instances of diffieHellman class
const alice = crypto.createDiffieHellman('modp15');
const bob = crypto.createDiffieHellman('modp15');
// Generate Key
alice.generateKeys();
bob.generateKeys();
// Compute Secret
// inputEncoding is null
// otherPublicKey expected to be Buffer
const aliceSecret = alice.computeSecret(
bob.getPublicKey() , null, 'base64');
const bobSecret = bob.computeSecret(
alice.getPublicKey(), null, 'base64');
if (aliceSecret === bobSecret)
console.log(`Symmetric key:${ aliceSecret }`)
使用以下命令運行index.js文件:
node index.js
輸出:
Symmetric key:abLoALX9
參考:
相關用法
- Node.js console.timeLog()用法及代碼示例
- Node.js x509.toLegacyObject()用法及代碼示例
- Node.js fs.fsyncSync()用法及代碼示例
- Node.js process.nextTick()用法及代碼示例
- Node.js GM charcoal()用法及代碼示例
- Node.js GM blur()用法及代碼示例
- Node.js GM sharpen()用法及代碼示例
注:本文由純淨天空篩選整理自braktim99大神的英文原創作品 Node.js diffieHellman.computeSecret() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。