江南无所有,聊赠一枝春
一、概述
RSA加密算法是一种非对称加密算法,使用了“一对”密钥,使用公钥加密的数据,利用私钥进行解密,反之相反。
官网: http://travistidwell.com/jsencrypt/
Npm文档: https://www.npmjs.com/package/jsencrypt
Demo: http://travistidwell.com/jsencrypt/demo/
二、RSA秘钥生成方式
1. 在线RSA加密/解密工具: http://tools.jb51.net/password/rsa_encode
2. 终端命令
# 进入目录
cd 【目标文件夹】
# 生成私钥,密钥长度为1024bit
openssl genrsa -out private.pem 1024
# 从私钥中提取公钥
openssl rsa -in private.pem -pubout -out public.pem
# 生成了private.pem 和 public.pem两个文件
三、后端
工具类:
public class RsaUtil {
private static final String PRIVATE_KEY_BASE64 ="MIIBNwIBAAJAZpDEyYjfnQoUfCOusIKo0O5AhtQtt8fij61t+gxexgO7Pui80SBaAsAU2J1DmaCaPTzGfZVBfOEdtHk1Mp1UrQIDAQABAj865OYa032TrzYUEmk88cn+LtDemvelkCGIXw3Hh1LkYIR+7KOu+JITesXoQnvqi+opS4G22ujQW/p+GBJZ/lUCIQC4YqaT20vZ9K/w2/fu9tpvuJb8pC1l7W6hAaKm+k2CnwIhAI5mzvxdQcWiALrSyvZJ54yM/XEEUCHL7n6ytjnaKFEzAiBR2VjgoaRWKExBuyOgLGxi06oSlD6i1HcbecJeJRZrOQIgCVqlhBxYIrRWme8Y1/7Yz/m++DqRTPcJbpcsszYqadMCICcldNOG/CF3Iy0OEQLKQrtpJU4ab3YoYD4c5jg8kaXT";
private static final RSA rsa = new RSA(PRIVATE_KEY_BASE64);
/**
* 私有化构造方法
*/
private RsaUtil() {
}
public static String deCodeByPrivateKey(String enpw) {
return rsa.decryptStr(enpw);
}
}
四、前端
# 安装
npm install jsencrypt@2.3.1
工具类:
import { JSEncrypt } from 'jsencrypt'
function getEncrypt(data) {
let encrypt = new JSEncrypt();
encrypt.setPublicKey("MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAZpDEyYjfnQoUfCOusIKo0O5AhtQtt8fij61t+gxexgO7Pui80SBaAsAU2J1DmaCaPTzGfZVBfOEdtHk1Mp1UrQIDAQAB");
return encrypt.encrypt(data);
}
export{
getEncrypt,
}