const crypto = require('crypto');
// 生成密钥对
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
});
// 公钥加密
const encryptWithPublicKey = (message) => {
const buffer = Buffer.from(message, 'utf8');
const encrypted = crypto.publicEncrypt(publicKey, buffer);
return encrypted.toString('base64');
};
// 私钥解密
const decryptWithPrivateKey = (encryptedMessage) => {
const buffer = Buffer.from(encryptedMessage, 'base64');
const decrypted = crypto.privateDecrypt(privateKey, buffer);
return decrypted.toString('utf8');
};
// 私钥签名
const signWithPrivateKey = (message) => {
const sign = crypto.createSign('SHA256');
sign.update(message);
sign.end();
const signature = sign.sign(privateKey);
return signature.toString('base64');
};
// 公钥验证签名
const verifyWithPublicKey = (message, signature) => {
const verify = crypto.createVerify('SHA256');
verify.update(message);
verify.end();
return verify.verify(publicKey, signature, 'base64');
};
// 测试公钥加密和私钥解密
const message = 'Hello World!';
// const encryptedMessage = encryptWithPublicKey(message);
// console.log(`Encrypted message: ${encryptedMessage}`);
// const decryptedMessage = decryptWithPrivateKey(encryptedMessage);
// console.log(`Decrypted message: ${decryptedMessage}`);
// 测试私钥签名和公钥验证签名
const signature = signWithPrivateKey(message);
console.log(`Signature: ${signature}`);
const isSignatureValid = verifyWithPublicKey(message + '1', signature);
console.log(`Is signature valid: ${isSignatureValid}`);
nodejs非对称加密简单demo实现
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 一 : 对称加密(DES、AES) 1.DES 2 : AES 二 : 非对称加密(RSA) 三 :MD5、SHA...
- EncryptionInfo Android加密库 github传送门 依赖 使用说明 Hash算法实现 代码示例...
- 前言: 在我们开发中免不了和服务器做一些数据交互,在交互过程中走得都是http请求,这类请求不像https那样的安...
- 1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。(2) 非对称...