一、引入crypto模块
crypto 为node 自带模块,无需安装
const crypto = require('crypto');
二、封装生成方法
async function generateRSAKeyPair() {
return new Promise((resolve, reject) => {
crypto.generateKeyPair('rsa', {
modulusLength: 2048, // 密钥长度为 2048 位
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem'
}
}, (err, publicKey, privateKey) => {
if (err) {
reject(err);
} else {
resolve({ publicKey, privateKey });
}
});
});
}
modulusLength可根据情况自行修改,modulusLength越长越安全但花费的时间也越多
三、使用生成方法
generateRSAKeyPair().then(({ publicKey, privateKey }) => {
console.log('Public Key:', publicKey);
console.log('Private Key:', privateKey);
// 将公钥发送给客户端
}).catch(error => {
console.error('Error generating RSA key pair:', error);
});
在已启用的node服务器中调用,或通过node直接运行当前文件node xxx.js
,进行调用
四、效果
调用后查看控制台便能看到生成的公钥私钥pem了