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

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;

}


回答:

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

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

但我想

  1. 长度问题应该是可以直接处理的
  2. 拼接再解密,需要处理临界部分,那些乱码应该就是这样来的(这个和加密过程有关)

以上是 JSEncrypt 透过公钥解密但过长回传 false 的全部内容, 来源链接: utcz.com/p/937490.html

回到顶部