前言
刚回答了SegmentFault上一个兄弟提的问题《非对称解密出错》。这个属于Node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总结下。
非对称加密的理论知识,可以参考笔者前面的文章《NODEJS进阶:CRYPTO模块之理论篇》。
完整的代码可以在 《Nodejs学习笔记》 找到,也欢迎大家关注 程序猿小卡的GitHub。
加密、解密方法
在Node.js中,负责安全的模块是crypto。非对称加密中,公钥加密,私钥解密,加解密对应的API分别如下。
加密函数:
解密函数:
入门例子
假设有如下utils.js
{
// 注意,第二个参数是Buffer类型
return crypto.publicEncrypt(key,Buffer.from(data));
};
// 解密方法
exports.decrypt = (encrypted,key) => {
// 注意,encrypted是Buffer类型
return crypto.privateDecrypt(key,encrypted);
};
测试代码app.js:
附上公钥、私钥 keys.js: