JavaScript RSA 超长字符加解密

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


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


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


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


分段加密方法:
// The right encryption code
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;
  }
};
分段解密方法:
// The error decryption code
JSEncrypt.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;
  }
};
附:如有不明白或者问题可以在下方留言
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值