Node.js 中的 crypto 模块生成公钥和私钥

技术博客 (270) 2023-10-24 09:01:01
const crypto = require('crypto');

// 生成密钥对
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
  modulusLength: 2048, // 模数长度,一般选择 2048 或以上
  publicKeyEncoding: {
    type: 'spki', // 公钥编码格式
    format: 'pem' // 公钥输出格式
  },
  privateKeyEncoding: {
    type: 'pkcs8', // 私钥编码格式
    format: 'pem', // 私钥输出格式
    cipher: 'aes-256-cbc', // 加密算法,可选
    passphrase: 'myPassphrase' // 加密密码,可选
  }
});

console.log('生成的公钥:');
console.log(publicKey);
console.log('生成的私钥:');
console.log(privateKey);

以上代码使用了 Node.js 内置的 crypto 模块,通过 generateKeyPairSync 方法生成了一对 RSA 密钥对,其中包括了公钥和私钥。可以通过 publicKeyprivateKey 变量获取生成的公钥和私钥。

在生成私钥时,可以指定加密算法和加密密码,以增加私钥的安全性。例如,上面的示例代码中指定了加密算法为 AES-256-CBC,并设置了加密密码为 "myPassphrase"。生成的私钥会使用指定的加密算法和密码进行加密,需要在使用私钥时输入正确的密码进行解密。这样可以增加私钥的保密性,防止未授权的访问。

THE END

发表回复