JSEncrypt 透过公钥解密但过长回传 false

这边有一段从 java 加密过来的

let encryptedResponse = 'Og_mhkIDdQvAXqZ3mm_VKcqIV-FK-uu4AA-U_7AYOfgzWlhdQWCCrVPj6PeVaOAem5njoED147pAoHcai8pTfVMRZ26a7KlOLRZ0iNRntfSUMoMDkYL1i0U3wDo-gsz7y3uS7jJSnQrH-GpIdx8ZFf7tthNO805fuQb4zEoC7FMofrGc9fdk7OoTIEWlnKENS-gKmUasx2z8AlbHQ5nG6WLvMO5ezF4G1hVQbdTlH4I-aVYxfPovxskZN8ZASk4IzRY_a06PGkWZ9k79to8_BxwHDNOwdT2FIlELt48oYqmTMfKgECtQUrO2rqtb5M1OByKmQM9ANvCSOMV5rHiLrS-XZpIiJi8Q5O5t5FNAEa891IJ1WZXZ0Twla5Al56mSYl83vO7YJhzF_GLvvrUNtpe6XT5vJIXg65mbFTUcdAMrrOII3mi7tOJD4FjU5F9RNtHuHgrOeD7iwsdoBSWNwEMo8kHxUXzIvSi0-wkaWYkmNrQ07DmRwQ3GiCOzzl4ySOc9fkEpfR6vDSBhZ0kzLRygJDWFjPK7j1w6nj_lNeogm6AxKM952qW5lDzqwwbSpYBXivCzkwaNJBSleqOIoG8nnS4_v1lDNVAJDyGK2P8z7MyII_y9Nwfetr1K_BYyy28I4GrwNiZMgtMRkj_kgQeyDBwCJ3a71ueDVV21m6c=';

我现在可以透过公钥解密(至于为何是公钥就别问了 qq)
只是有个问题是太长!
导致每次回传都会是 false
我尝试把以上加密字串转为 Uint8Array
然后分段处理加密字串
但因为是分段所以解析不完整,会变成

早上好中国 现在我有冰淇淋 我很喜欢冰淇淋 但是 速度与激情9 比冰淇淋 速度与激情 速倀ꦤ莦ㅹ 我最喜欢 所以…现在是音乐时间 准备 1 2 3 两个礼拜以后 速度与激情9 ×3 不要倀不要错过 记得去电影院看速度与激情9 因为非常好电影 动作非常好 差不多一样冰淇怀狠再见

跑出乱码。。。
这有什么方式可以解决?

import '@/utils/jsencrypt'
import '@/utils/base64'

let base64String = encryptedResponse.replace(/_/g, '/').replace(/-/g, '+');
let arrayBuffer = _base64ToArrayBuffer(base64String);

let ww = ''
for (let i = 0; i <= (arrayBuffer.length / 128); i++) {
  if (i < arrayBuffer.length / 128) {
    let start = i * 128;
    let end = (i + 1) * 128;
    let buffer = arrayBuffer.slice(start, end);
    if (buffer.length > 0) {
      ww += decrypt.decrypt(Base64.fromUint8Array(buffer), false);
    }
  }
}
console.log(ww)

function _base64ToArrayBuffer(base64) {
  let binary_string = window.atob(base64);
  let len = binary_string.length;
  let bytes = new Uint8Array(len);
  for (var i = 0; i < len; i++) {
    bytes[i] = binary_string.charCodeAt(i);
  }
  return bytes;
}
阅读 3.5k
1 个回答

不知道你所谓的过长是指什么?获取得到的加密数据,这个是本地存储的,具体长有多长,如果是文本为主,应该也不会太多吧(上GB?),再长应该都可以缓冲吧?

因为不知道你具体流程,也不知道加密、解密的具体要求,不好说。

但我想

  1. 长度问题应该是可以直接处理的
  2. 拼接再解密,需要处理临界部分,那些乱码应该就是这样来的(这个和加密过程有关)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题