選來選去,最後選中的是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)
複製代碼