📅  最后修改于: 2023-12-03 14:44:38.365000             🧑  作者: Mango
在 Node.js 中,可以使用 crypto
模块实现非对称加密,其中 ecdh
是一种椭圆曲线算法。ecdh.generateKeys()
是 ecdh
对象的一个方法,用于生成公钥和私钥。
ecdh.generateKeys([encoding[, format]])
encoding
(可选):编码格式,可以是'latin1'
、'hex'
、'base64'
。format
(可选):输出格式,可以是'compressed'
、'uncompressed'
、'hybrid'
。返回一个 Buffer
类型的对象,表示生成的公钥或私钥。
const crypto = require('crypto');
const ecdh = crypto.createECDH('secp256k1');
// 生成私钥和公钥
const privateKey = ecdh.generateKeys();
const publicKey = ecdh.getPublicKey();
console.log('私钥:', privateKey.toString('hex'));
console.log('公钥:', publicKey.toString('hex'));
输出结果类似于:
私钥: 6c4be6af03f3d2c4ca9ef936e26f6c1dba2f3cdf3f02645c285eeaafaa076c41
公钥: 04c88fb9db657a49d717dfa1b590842e505154a114f13004f5aac9572968d5b2ba5f5a941d23f890ee7e1939822fc7762a6c75e11902faf7d26dad346695f4637e
需要注意的是,生成的私钥和公钥是以 Buffer
类型返回的,可以使用 toString()
方法转换为字符串,这里使用 hex
格式输出。公钥的输出格式默认为 compressed
,可以通过修改 format
参数来改变。