JavaScript RSA 超长字符加解密

来源:互联网 发布:电子表格数据样板 编辑:程序博客网 时间:2024/05/29 07:36

刚刚接触到RSA当时不了解,RSA加解密是有字符串长度限制的,加密最大字符长度是117位,解密最大长度是128位。


用到的JS库JSEncrypt,刚开始找了好几个,发现就这个好用一些,换回来了(途中遇到很多坑,一步一个坑过来的)。


这个库的缺陷:没法用公钥解密只能加密,私钥没法加密只能解密(可能是我没找到方法吧)


附链接:http://travistidwell.com/jsencrypt/


分段加密方法:
// The right encryption codeJSEncrypt.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;  }};
分段解密方法:
// The error decryption codeJSEncrypt.prototype.decryptLong = function(string) {  var k = this.getKey();  var maxLength = ((k.n.bitLength()+7)>>3);  // var maxLength = 128;  try {    var string = b64tohex(string);    var ct = "";    if (string.length > maxLength) {      var lt = string.match(/.{1,128}/g);      lt.forEach(function(entry) {        var t1 = k.decrypt(entry);        ct += t1;      });    }    var y = k.decrypt(b64tohex(string));    return y;  } catch (ex) {    return false;  }};
附:如有不明白或者问题可以在下方留言
原创粉丝点击