JavaScript RSA 超长字符加解密
2017-06-15 14:59
4115 查看
刚刚接触到RSA当时不了解,RSA加解密是有字符串长度限制的,加密最大字符长度是117位,解密最大长度是128位。
用到的JS库JSEncrypt,刚开始找了好几个,发现就这个好用一些,换回来了(途中遇到很多坑,一步一个坑过来的)。
这个库的缺陷:没法用公钥解密只能加密,私钥没法加密只能解密(可能是我没找到方法吧)
附链接:http://travistidwell.com/jsencrypt/
附:如有不明白或者问题可以在下方留言
用到的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; } };
附:如有不明白或者问题可以在下方留言
相关文章推荐
- 用javascript与java进行RSA加密与解密
- C# javascript 采用 RSA 加密解密
- 用javascript与java进行RSA加密与解密
- php、javascript使用rsa进行加密/解密
- RSA使用javascript加密JAVA解密
- Javascript当中的RSA加解密
- rsa加解密的内容超长的问题解决
- rsa加解密的内容超长的问题解决
- RSA加密解密 错误:Base-64 字符数组的无效长度
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
- Java前端Rsa公钥加密,后端Rsa私钥解密(支持字符和中文)
- C# RSA PEM解密字符
- 使用RSA非对称加密完成JavaScript前端分段加密和java后端分段解密
- 用javascript与java进行RSA加密与解密
- 用javascript与java进行RSA加密与解密
- RSA加密解密以及内容超长时采用分段加密
- rsa加解密的内容超长的问题解决
- JavaScript (Node)对3DES,RSA加解密的一些实践
- 对输入的字符串进行RSA加密和解密处理
- JavaScript中生成HTML的字符格式函数