nodejs rsa加密解密
时间: 2023-08-30 21:05:42 浏览: 194
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它使用公钥和私钥来加密和解密数据。在Node.js中,我们可以使用`crypto`模块来实现RSA加密和解密。
首先,我们需要生成RSA密钥对。可以使用以下代码生成一个新的RSA密钥对:
```javascript
const crypto = require('crypto');
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs1',
format: 'pem'
}
});
console.log('公钥:');
console.log(publicKey);
console.log('私钥:');
console.log(privateKey);
```
生成的公钥和私钥将以PEM格式显示。
接下来,我们可以使用生成的公钥进行加密,私钥进行解密。以下是一个示例:
```javascript
const crypto = require('crypto');
// 加密
function encrypt(data, publicKey) {
const buffer = Buffer.from(data, 'utf8');
const encrypted = crypto.publicEncrypt(publicKey, buffer);
return encrypted.toString('base64');
}
// 解密
function decrypt(encryptedData, privateKey) {
const buffer = Buffer.from(encryptedData, 'base64');
const decrypted = crypto.privateDecrypt(privateKey, buffer);
return decrypted.toString('utf8');
}
// 使用示例
const plaintext = 'Hello, RSA!';
const encrypted = encrypt(plaintext, publicKey);
console.log('加密后的数据:', encrypted);
const decrypted = decrypt(encrypted, privateKey);
console.log('解密后的数据:', decrypted);
```
请注意,这只是一个基本示例,实际使用时可能需要处理更复杂的数据和错误处理。
希望这可以帮助到你!如有任何问题,请随时提问。
阅读全文