node-rsa标准库写法
时间: 2024-12-18 17:20:49 浏览: 17
`node-rsa`是一个在Node.js环境中常用的RSA加密库,它的使用相对直观。下面是一个简单的例子,展示了如何创建一个RSA密钥对,加密数据以及解密数据:
```javascript
// 引入node-rsa库
const RSA = require('node-rsa');
// 创建一个新的RSA对象
const rsa = new RSA();
// 生成私钥和公钥对
async function generateKeys() {
try {
await rsa.generateKeyPair(2048); // 2048位密钥长度是个常见选择
const privateKey = rsa.exportKey('pkcs8'); // 导出私钥(PKCS#8格式)
const publicKey = rsa.exportKey('public'); // 导出公钥(PEM格式)
console.log('Private key:', privateKey);
console.log('Public key:', publicKey);
} catch (error) {
console.error('Error generating keys:', error);
}
}
// 加密数据
function encryptData(plaintext, publicKey) {
return rsa.encrypt(plaintext.toString(), publicKey).toString();
}
// 解密数据
function decryptData(ciphertext, privateKey) {
try {
const decryptedData = rsa.decrypt(Buffer.from(ciphertext, 'hex'), privateKey); // 注意输入是Buffer对象
return decryptedData.toString();
} catch (error) {
console.error('Error decrypting:', error);
}
}
generateKeys().then(() => {
// 示例:加密和解密消息
const message = 'Hello, world!';
const encryptedMessage = encryptData(message, publicKey);
const decryptedMessage = decryptData(encryptedMessage, privateKey);
console.log('Encrypted:', encryptedMessage);
console.log('Decrypted:', decryptedMessage);
});
```
以上代码首先生成一个2048位的RSA密钥对,然后展示如何使用它们进行数据的加密和解密。记得在实际项目中妥善管理私钥,避免泄露。
阅读全文