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

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

Linda Hamilton
Linda Hamilton原创
2024-12-14 11:43:09698浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn