项目中在用户登录时需要进行用户名和密码加密,这里选用了 RSA 非对称加密的方式.
- 公钥私钥:OpenSSL 的公钥私钥(Node crypto 模块限制)
- 前端: jsencrypt 库加密
- 后端: Node crypto 模块
使用 openssl 生成公钥私钥
linux 生成公钥私钥命令:
1 | genrsa -out rsa_private_key.pem 1024 // 生成1024位私钥 |
这里已经生成了公钥和私钥,公钥私钥的使用可以分为两种方式
- 在使用时使用
fs.readFileSync()
来读取 - 直接将公私钥拷贝出来放到配置文件中(私钥要保证正确的换行格式,否则 crypto 不能正确的使用私钥,可以在每行末尾添加
\n\
来确保格式正确)
前端使用 jsencrypt 库加密
这个库可以使用模块加载的方式使用,下面的代码也是使用这种方式,当然也可以在页面中通过<script>
标签引入,这种方式的使用请参考库的具体文档
1 | const JSEncrypt = require("jsencrypt"); // 引入模块 |
服务端使用 Node crypto 模块解密
解密函数实现
1 | function rsaDecrypt(text) { |
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !