首页 > Java > java教程 > 为什么我的 Java AES/CBC 解密会产生损坏的明文?

为什么我的 Java AES/CBC 解密会产生损坏的明文?

Linda Hamilton
发布: 2024-12-14 11:43:09
原创
690 人浏览过

Why Does My Java AES/CBC Decryption Produce Corrupted Plaintext?

解密的密文包含 Java AES/CBC 中格式错误的初始字节

在提供的代码中,使用带有 PKCS5 填充的 AES/CBC 解密后,明文的初始部分似乎已损坏。

根原因

该问题源于忽略将加密和解密的字节转换为字符串。在解密循环中,密码的输出直接写入输出流。因此,包含填充信息的明文的第一个字节被错误地解释为消息的一部分。

解决方案

要解决此问题,请将密文和明文转换为使用适当的字符编码的字符串。这可以确保正确处理填充并准确显示明文。

改进的代码示例

// Before encryption, encode the plaintext as a string
byte[] plaintextBytes = "Hello there. How are you? Have a nice day.".getBytes(StandardCharsets.UTF_8);
// ... encrypt and decrypt as before ...

// Convert the decrypted bytes to a string
String decryptedText = new String(decryptedBytes, StandardCharsets.UTF_8);
System.out.println("Decrypted text: " + decryptedText);
登录后复制

以上是为什么我的 Java AES/CBC 解密会产生损坏的明文?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板