RSA解密出现部分中文乱码什么原因???

youngfish0110 2018-11-28 05:49:41



...全文
4218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MaltDust 2021-05-18
  • 打赏
  • 举报
回复 1
是因为一个中文3个字节,在解密最大长度分界如果3个字节被分隔成了两段转成string就会乱码了。分段解密应该把结果byte拼接起来,再把byte数组一次都转成string,不能分段转string再拼接string。 数组拼接:

// 循环外定义
byte[] enBytes = null;
// 循环里拼接
enBytes = ArrayUtils.addAll(enBytes, doFinal);
参考: https://blog.csdn.net/qq_41566219/article/details/116302087
qq_44698336 2020-10-26
  • 打赏
  • 举报
回复
大佬,解没解决
yyfhz 2020-03-17
  • 打赏
  • 举报
回复
如果加密解密算法没有问题的话,则最有可能出现问题的点在于加密后数据的存储与传输。
因为加密后的数据本身是字节码,不是字符串。强制把它转成字符串的过程中会因为部分字节码无法在字符码表中找到对应值而被系统用默认字符替换。
既然加密后的数据都被改变了,解码后当然有可能发生无法复原的问题。
建议LZ检查加密前后数据的存放格式,并确保解密后的数据与加密前的数据采用相同的encoding来进行字符串的转换。
maradona1984 2020-03-16
  • 打赏
  • 举报
回复
部分乱码就有点奇怪了,你得确认下实际的字符是什么 你提供的信息太少,没办法具体定位
tianfang 2020-03-15
  • 打赏
  • 举报
回复
输出的编码未明确,GBK还是UTF8,导致使用了不同编码的中文数据进行测试。 这个方法设计不合理,加密解密都是二进制数据,你提供的方法也应该是二进制的输入输出,对文本的编解码不应该包含在此方法中 或者把CHARSET作为输入参数
Js凌东 2020-03-15
  • 打赏
  • 举报
回复
解决没大佬大佬
youngfish0110 2018-11-28
  • 打赏
  • 举报
回复
为什么有的中文好好的

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧