Node.js ecdh.getPublicKey() 方法

Node.js ecdh.getPublicKey() 方法

ecdh.getPublicKey() 方法是 crypto模块内 ECDH 类的内置应用程序编程接口,用于以指定的编码获取椭圆曲线迪菲-赫尔曼(ECDH)对象的公钥。可以使用 encoding 参数指定密钥的编码和 format 参数指定格式。

在获取公钥之前,必须首先使用 generateKeys() 方法生成密钥。

语法:

ecdh.getPublicKey( encoding, format )

参数: 该方法接受如上所述的两个参数,并在下面进行描述:

  • encoding: 这是一个字符串值,用于指定返回值的编码方式。
  • format: 这是一个字符串,用于指定密钥的格式。该值可以是“compressed”或“uncompressed”。

返回值: 它以指定的编码方式返回椭圆曲线DiffieHellman公钥。如果没有提供编码方式,则返回为缓冲区;否则返回字符串。

示例1: 下面的示例演示了该方法的使用:

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);

输出:

Geek A的公钥是:<缓冲区 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个字节>   
Geek B的公钥是:<缓冲区 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个字节>

示例2:

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);

输出:

Geek A的公钥是:BAECc88Lu8XdEw2wUilULCKCcH0kQC79LilcYuJ92AuUICTIymP3cfStcD5GfkbF329l2wBZr4xwUgQXagyE6isnNAHMoXs2U4eo3NsCmSI2+BxSsJHYWKKim8nJQN8m7VGsQ4D0fpMGnwGFCjouO+V0vBB3ZVEkPfSWKjWytI0Wlf7kxA==   
Geek B的公钥是:02015ed9d8734b8568583926cb1fa5423d8607458fe236bc92c8652c3beb8c6940e673379b944f39c5549a802eabbe8b6723220b9eaa22293fee76591b9fabbb29d539 

参考: https://nodejs.org/api/crypto.html#crypto_ecdh_getpublickey_encoding_format

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程