因项目登录密码字段没有加密引起安全问题,琢磨了下如何基于RSA加密,进行前后端通信(Java项目)。空余时间,看了下在node下的实现。
一、准备
前端是利用jsencrypt.js去加密,后端利用node-rsa去生成公私钥并解密。
二、实现
我是使用koa2初始化的项目。首先,需要前端页面显示和处理加密数据,所以直接在views中新建了index.html,用html为了不在学习模板上花时间。
修改index中的路由,
router.get('/', async (ctx, next) => {
await ctx.render('index.html');
});
在html中引入jsencrypt.js,界面内容仅为一个输入框和发送命令的按钮:
gogogog
document.getElementById('start').onclick = function() {
// 获取公钥
fetch('/publicKey').then(function(res){
return res.text();
}).then(function(publicKey) {
// 设置公钥并加密
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
var encrypted = encrypt.encrypt(document.getElementById('content')