一、RSA介绍
RSA是一种非对称加密算法,是由一对密钥来进行加解密的过程,分别称为公钥和私钥。我项目里采用公钥加密,使用私钥解密。
加密过程:
(1)后端JAVA生成一对密钥(公钥和私钥),私钥不公开,后端保留。
(2)登录前先调接口,拿到后端给的公钥,前端用公钥对消息进行加密后传给后端。
(3)后端接收到前端加密的消息,利用他自己的私钥对消息进行解密。
在这个过程中,只有2次传递过程,第一次是后端传递公钥给前端,第二次是前端传递加密消息给后端,即使都被截获,也没有危险性,因为只有后端的私钥才能对消息进行解密,防止了消息内容的泄露。与之前使用的crypto加解密相比,密钥和偏移量都在前端存储,这种不对称公私钥的方式更安全。
原文链接:https://blog.csdn.net/weixin_45259626/article/details/107169325
二、过程
1. 安装依赖
npm install jsencrypt
2. 引入
import { JSEncrypt } from 'jsencrypt';
3. 加密
//rsa加密
export function rasEncrypt(key, data) {
// 新建JSEncrypt对象
let encryptor = new JSEncrypt();
// 设置公钥
encryptor.setPublicKey(key); // key为公钥
// 加密数据
return encryptor.encrypt(data); //data就是需要加密的密码
}
4. 解密
// ras解密
export function rasDecrypt(privateKey, data) {
// 新建JSEncrypt对象
let decrypt= new JSEncrypt();
// 设置私钥
decrypt.setPrivateKey(privateKey);
// 解密数据
decrypt.decrypt(data);
}