RSA加密jsencrypt.js
2018-03-08 本文已影响0人
半瓶不满
引入jsencrypt.js文件
/**
* RSA加密
* @param str
* @returns {*}
*/
cmdRSAEncrypt (str){
let key ="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtID8+nPhjcHtIIo+ACbcx4ijCyNMXRZeP5dCIaYaS915lFtrwFUPPzpTwA3OS12zQjowKh/v7ING0KhVQ66n+kI5oEUdAyqrBEYGCoUDszQ9SRm/zb3KR1dMjKrhRLEC3Q5h7zR7QMLKYg0/Qj0tJtHXsUMjxGE6Wes9dCNKewQIDAQAB"
,Encrypt = new JSEncrypt();
Encrypt.setPublicKey(key);
return Encrypt.encrypt(str);
}
通过cmdRSAEncrypt(str)调用,
参数要转换格式JSON.stringify()。
加密参数过长?
有时加密时,会遇到加密参数过长而无法加密的现象,
在源码中加入以下代码,通过调用encryptLong方法,重新定义加密函数即可。
JSEncrypt.prototype.encryptLong = function(string) {
var k = this.getKey();
// var maxLength = (((k.n.bitLength()+7)>>3)-11);
var maxLength = 117;
try {
var lt = "";
var ct = "";
if (string.length > maxLength) {
lt = string.match(/.{1,117}/g);
lt.forEach(function(entry) {
var t1 = k.encrypt(entry);
ct += t1 ;
});
return hex2b64(ct);
}
var t = k.encrypt(string);
var y = hex2b64(t);
return y;
}
catch (ex) {
return false;
}
};