Node.js ecdh.getPrivateKey() 方法
ecdh.getPrivateKey() 方法是 crypto 模块内 ECDH 类的内置应用程序接口,用于获取椭圆曲线迪菲-赫尔曼(ECDH)对象的私钥。可以使用 encoding 参数指定密钥的编码方式,使用 format 参数指定格式。
注意: 在使用私钥之前,必须先使用 generateKeys() 方法生成密钥。
语法:
ecdh.getPrivateKey( encoding )
参数: 此方法接受一个如上所述和下面描述的单个参数:
- 编码: 这是一个字符串值,指定返回值的编码。这是一个可选参数。
- 格式: 这是一个指定键的格式的字符串。值可以是’compressed’或’uncompressed’。这是一个可选参数。
返回值: 它返回指定编码的椭圆曲线Diffie-Hellman私钥。当未提供编码时,返回为缓冲区,否则返回字符串。
下面的示例演示了此方法:
示例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 private key for geekA
const geekAprivateKey = geekA.getPrivateKey();
console.log("Private Key of Geek A is:",
geekAprivateKey);
// Get the private key for geekB
const geekBprivateKey = geekB.getPrivateKey();
console.log("Private Key of Geek B is:",
geekBprivateKey);
输出:
Geek A的私钥是: Geek B的私钥是:
示例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 private key for geekA in base64
const geekAPrivateKey =
geekA.getPrivateKey('base64');
console.log("Private Key of Geek A is:",
geekAPrivateKey);
// Get the private key for geekB in hex
const geekBPrivateKey =
geekB.getPrivateKey('hex');
console.log("Private Key of Geek B is:",
geekBPrivateKey);
输出:
Geek A的私钥是:AXZvAlAJi4U5gL0Hj+kkriNlH45k+UkIz27MD0x4jsbKTjEUcU8vTUFvcw3aLHt4lit+V1Jp6fQ/4MH2dFNlfpu6
Geek B的私钥是:0152465d0c729f46f1f78532fde54eb0218b491e5a87926120862b79de9084e7a78f604de4d4d9f4c31ab7819bf6cf8f0d75849781ad556fed947ad968e008c90940
参考: https://nodejs.org/api/crypto.html#crypto_ecdh_getprivatekey_encoding