Vue用JSEncrypt对长文本json加密以及发现解密失败

哈喽 大家好啊,最近发现进行加密后 超长文本后端解密失败,经过看其他博主修改

JSEncrypt原生代码如下:

Vue用JSEncrypt对长文本json加密以及发现解密失败_第1张图片 

 

 // 分段加密,支持中文
     JSEncrypt.prototype.encryptUnicodeLong = function (string) {
         var k = this.getKey();
         //根据key所能编码的最大长度来定分段长度。key size - 11:11字节随机padding使每次加密结果都不同。
         var maxLength = ((k.n.bitLength()+7)>>3)-11;
         try {
             var subStr="", encryptedString = "";
             var subStart = 0, subEnd=0;
             var bitLen=0, tmpPoint=0;
             for(var i = 0, len = string.length; i < len; i++){
                 //js 是使用 Unicode 编码的,每个字符所占用的字节数不同
                 var charCode = string.charCodeAt(i);
                 if(charCode <= 0x007f) {
                     bitLen += 1;
                 }else if(charCode <= 0x07ff){
                     bitLen += 2;
                 }else if(charCode <= 0xffff){
                     bitLen += 3;
                 }else{
                     bitLen += 4;
                 }
                 //字节数到达上限,获取子字符串加密并追加到总字符串后。更新下一个字符串起始位置及字节计算。
                 if(bitLen>maxLength){
                     subStr=string.substring(subStart,subEnd)
                     encryptedString += k.encrypt(subStr);
                     subStart=subEnd;
                     bitLen=bitLen-tmpPoint;
                 }else{
                     subEnd=i;
                     tmpPoint=bitLen;
                 }
             }
             subStr=string.substring(subStart,len)
             encryptedString += k.encrypt(subStr);
             return hex2b64(encryptedString);
         } catch (ex) {
             return false;
         }
     };

这个源码算法 我还是不是太懂啦 但是目前已经测试成功

原博主:

前端RSA加密解密:支持中文 - 基于jsencrypt使用任意长度密钥,对任意长度字符串进行分段加解密_encryptunicodelong_小傻哥的博客-CSDN博客

你可能感兴趣的:(javascript,java,前端)