一、介绍
1、RSA介绍
RSA加密是一种非对称加密。
可以在不直接传递密钥的情况下,完成解密。
这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。
是由一对密钥来进行加解密的过程,分别称为公钥和私钥。
两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。
通常个人保存私钥,公钥是公开的(可能同时多人持有)。
2、RSA的加密过程
(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。
(2)A传递自己的公钥给B,B用A的公钥对消息进行加密。
(3)A接收到B加密的消息,利用A自己的私钥对消息进行解密。
在这个过程中,只有2次传递过程,第一次是A传递公钥给B,第二次是B传递加密消息给A,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行解密,防止了消息内容的泄露。
二、使用
1、安装依赖
npm install jsencrypt --save
2、main.js中引用依赖
// main.js 中
import JSEncrypt from 'jsencrypt';
Vue.prototype.$getRsaCode = function(str){ // 注册方法
let pubKey = `-----BEGIN PUBLIC KEY-----
xxxxxxxxRSA公钥填写处xxxxxxxxxxxx-----END PUBLIC KEY-----`;// ES6 模板字符串 引用 rsa 公钥
let encryptStr = new JSEncrypt();
encryptStr.setPublicKey(pubKey); // 设置 加密公钥
let data = encryptStr.encrypt(str.toString()); // 进行加密
return data;
}
3、使用RSA
this.$getRsaCode('需要加密内容')
4、示例
如对提交数据进行加密
//如对提交数据进行加密
goPay(){
let params={
money:'99',
signContent:this.$getRsaCode('20200810') //举例:对'20200810'加密
}
pay(params).then(res=>{})
}
提示数据请求体显示
{
money:'99',
signContent:'xbj$mklsdsfdg&%oldhdfhfg@hfghfg&jhgfhjf-7gjfggj%&JJHJsdfgsdfgh'
}
后端或得加密的内容后,会通过后端的私钥进行解密,解密得出
{
money:'99',
signContent:'20200810'
}
网友评论