选来选去,最后选中的是jsencryptvue
1、安装jsencryptnpm
npm i jsencrypt
复制代码
2、在main.js 引入 jsencrypt后端
import JsEncrypt from 'jsencrypt'
Vue.prototype.$jsEncrypt = JsEncrypt
复制代码
3、使用jsencrypt,我这里单独把它写在一个js里面,方便管理一些嘛
目录结构
api
import Vue from 'vue'
import JsEncrypt from 'jsencrypt'
Vue.prototype.encruption = function(obj,pubkey){
var jse = new JsEncrypt(); // 新建JSEncrypt对象
jse.setPublicKey(pubkey) // 设置公钥
return jse.encrypt(obj); // 对密码进行加密
}
复制代码
在设置公钥的时候,须要后端同窗传过来的公钥(pubkey)进行加密,因此我就是在这里踩得坑呀,我把请求公钥的方法写在了上段的js里,致使了在进行加密的时候尚未获取到pubkey,因此每次传的私钥后端同窗都解密不出来。
最后debug以后发现了这个问题,因此在页面加载时候把pubkey就先请求出来 而后在须要加密时候把pubkey直接当作参数传过来~而后就完美的解决了这个bug~
请求公钥时候的代码:bash
//请求公钥
getPubKey(){
apiRsaKey({ //接口
}).then(res =>{
this.pubKey = res.data
})
},
复制代码
调用encruption方法ui
this.encruption(obj,this.pubKey)
复制代码