ecdh.getPublicKey() 方法是加密模块内的 ECDH 类的内置应用程序编程接口,用于获取指定编码的椭圆曲线 Diffie-Hellman (ECDH) 对象的公钥。可以使用 encoding 参数指定 key 的编码,使用 format 参数指定格式。
必须首先使用 generateKeys() 方法生成 key ,然后才能使用公钥检索它们。
用法:
ecdh.getPublicKey( encoding, format )
参数:此方法接受上面提到和下面描述的两个参数:
- encoding:这是一个字符串值,用于指定返回值的编码。
- format:它是一个字符串,用于指定 key 的格式。该值可以是 ‘compressed’ 或 ‘uncompressed’。
返回值:它以指定的编码返回椭圆曲线 DiffieHellman 公钥。当没有提供编码时,它作为缓冲区返回,否则返回一个字符串。
范例1:下面的例子演示了这种方法:
Javascript
const crypto = require('crypto');
// Generate an ECDH object for geekA
const geekA = crypto.createECDH('secp521r1');
// Generate an ECDH object for geekB
const geekB = crypto.createECDH('secp521r1');
// Generate the keys for both the geeks
geekA.generateKeys();
geekB.generateKeys();
// Get the public key for geekA
const geekAPublicKey = geekA.getPublicKey();
console.log("Public Key of Geek A is:", geekAPublicKey);
// Generate keys for geekB
const geekBPublicKey = geekB.getPublicKey();
console.log("Public Key of Geek B is:", geekBPublicKey);
输出:
Public Key of Geek A is:<Buffer 04 00 47 18 d4 45 58 3c 8e 33 37 0d a4 ef 42 6a 06 a2 e6 bd a6 4d fe a7 97 e2 e7 55 ce 04 ae 60 71 cc f3 cc 94 83 0c 57 72 2d ad a2 95 ab 7b 97 62 77 … 83 more bytes>
Public Key of Geek B is:<Buffer 04 01 03 2c 43 12 21 39 d2 d5 e8 dc bf f7 c6 cf b2 a3 15 62 00 47 50 83 2e 22 ce 54 20 13 dd fa d2 0c 0f 31 fe b0 c5 1f af 65 a1 d0 b0 49 66 42 61 99 … 83 more bytes>
范例2:
Javascript
const crypto = require('crypto');
// Generate an ECDH object for geekA
const geekA = crypto.createECDH('secp521r1');
// Generate an ECDH object for geekB
const geekB = crypto.createECDH('secp521r1');
// Generate the keys for both the geeks
geekA.generateKeys();
geekB.generateKeys();
// Get the public key for geekA in base64
const geekAPublicKey =
geekA.getPublicKey('base64');
console.log(
"Public Key of Geek A is:", geekAPublicKey);
// Generate keys for geekB in hex in
// the compressed format
const geekBPublicKey =
geekB.getPublicKey('hex', 'compressed');
console.log(
"Public Key of Geek B is:", geekBPublicKey);
输出:
Public Key of Geek A is:BAECc88Lu8XdEw2wUilULCKCcH0kQC79LilcYuJ92AuUICTIymP3cfStcD5GfkbF329l2wBZr4xwUgQXagyE6isnNAHMoXs2U4eo3NsCmSI2+BxSsJHYWKKim8nJQN8m7VGsQ4D0fpMGnwGFCjouO+V0vBB3ZVEkPfSWKjWytI0Wlf7kxA==
Public Key of Geek B is:02015ed9d8734b8568583926cb1fa5423d8607458fe236bc92c8652c3beb8c6940e673379b944f39c5549a802eabbe8b6723220b9eaa22293fee76591b9fabbb29d539
参考: https://nodejs.org/api/crypto.html#crypto_ecdh_getpublickey_encoding_format
相关用法
- Node.js console.timeLog()用法及代码示例
- Node.js x509.toLegacyObject()用法及代码示例
- Node.js fs.fsyncSync()用法及代码示例
- Node.js process.nextTick()用法及代码示例
- Node.js GM drawLine()用法及代码示例
- Node.js GM drawArc()用法及代码示例
- Node.js GM drawPolyline()用法及代码示例
- Node.js GM drawBezier()用法及代码示例
注:本文由纯净天空筛选整理自sayantanm19大神的英文原创作品 Node.js ecdh.getPublicKey() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。