Node.js ecdh.setPrivateKey() 方法

Node.js ecdh.setPrivateKey() 方法

ecdh.getPrivateKey() 方法是crypto模块中ECDH类的内置应用程序编程接口,用于设置椭圆曲线Diffie-Hellman(ECDH)对象的私钥。可以使用encoding参数指定密钥的编码方式。

如果私钥对于指定的曲线无效,将抛出错误。使用此方法设置私钥将自动在ECDH对象中生成并设置相应的公钥。

语法:

ecdh.setPrivateKey( privateKey, encoding )

参数: 此方法接受两个参数,如上所述,并如下描述:

  • privateKey: 这是需要设置的私钥。它可以以字符串、ArrayBuffer、Buffer、TypedArray或DataView的格式给出。
  • encoding: 表示返回值的编码的字符串值。这是一个可选参数。

返回值: 返回指定编码的椭圆曲线DiffieHellman公钥。如果没有提供编码,则返回一个Buffer,否则返回一个String。

下面的示例演示了这个方法:

示例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'); 
  
// Create a private key of geekA 
geekA.setPrivateKey("thisisasecretkey!"); 
  
// Create a private key of geekB 
geekB.setPrivateKey("thisisanotherkey!"); 
  
// Get the private keys of both the geeks 
let geekAPrivateKey = geekA.getPrivateKey(); 
let geekBPrivateKey = geekB.getPrivateKey(); 
  
console.log("Private Key of Geek A is:", 
  geekAPrivateKey); 
console.log("Private Key of Geek B is:", 
  geekBPrivateKey);

输出:

Geek A的私钥是:<Buffer 74 68 69 73 69 73 61 73 65 63 72 65 74 6b 65 79 21>   
Geek B的私钥是:<Buffer 74 68 69 73 69 73 61 6e 6f 74 68 65 72 6b 65 79 21>

示例 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'); 
  
// Create a private key of geekA 
// with "hello" in hex format 
geekA.setPrivateKey("68656c6c6f", "hex"); 
  
// Create a private key of geekB 
// with "world" in base64 format 
geekB.setPrivateKey("d29ybGQ=", "base64"); 
  
// Get the private keys of both the geeks 
// in 'utf-8' encoding 
let geekAPrivateKey =  
  geekA.getPrivateKey('utf-8'); 
let geekBPrivateKey =  
  geekB.getPrivateKey('utf-8'); 
  
console.log("Private Key of Geek A is:",  
  geekAPrivateKey); 
console.log("Private Key of Geek B is:", 
  geekBPrivateKey);

输出:

Private Key of Geek A is: hello
Private Key of Geek B is: world

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程