程序员必备基础 :今天推出一款产品JSEncrypt
如何安全传输存储用户密码?需要借助一款插件,JSEncrypt 前端js加密库1.jsencryptimport JSEncrypt from 'jsencrypt'; //导入Vue.prototype.$getCode = function(pass, pubkey) { //挂载到vue原型上let encryptor = new JSEncrypt();encryptor.setPubli
·
如何安全传输存储用户密码? 需要借助一款插件,JSEncrypt 前端js加密库
1.下载 JSEncrypt 加密插件并挂载到vue原型上
import JSEncrypt from 'jsencrypt'; //导入
Vue.prototype.$getCode = function(pass, pubkey) { //挂载到vue原型上
let encryptor = new JSEncrypt();
encryptor.setPublicKey(pubkey);
let rsaPassWord = encryptor.encrypt(pass);
return rsaPassWord;
};
2.调用vue原型上的方法 $getCode ,我这里通过vuex来存用户token
store.dispatch('GetInfo', Vue.prototype.$getCode) //vuex存
3. 在vuex中的mutations中存GetInfo派发传过来的token,或数据
GetInfo({ commit, state }, getCode) {
// 增加组织获取
getUserOrgs().then(res => {
if (res.rel) {
if (res.data.length > 0) {
sessionStorage.setItem('USERORGS', JSON.stringify(res.data));
commit('SET_USER_ORGS', res.data);
}
} else {
}
});
// 存储用户信息
getUserDomain().then(res => {
if (res.data.attr1) {
const data = res.data.attr1;
sessionStorage.setItem('USERINFOAttr1', JSON.stringify(data));
}
});
},
扩展:
分段解密
import { b64tohex} from "jsencrypt/lib/lib/jsbn/base64";
export const decryptLong = (content:string) => {
const enc = new JSEncrypt({});
enc.setPrivateKey(LICENSE_KEY); // 私钥
let k = enc.getKey();
let maxLength = 128;
try {
let hexStr = b64tohex(content);
if (hexStr.length > maxLength * 2) {
let hexStrArr = hexStr.match(/.{1,256}/g); // 128位解密。取256位
const ct = hexStrArr.map(entry => k.decrypt(entry)).join('');
return ct;
} else {
return k.decrypt(hexStr);
}
} catch (ex) {
return false;
}
};
更多推荐
已为社区贡献2条内容
所有评论(0)