在提供的代码中,使用带有 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中文网其他相关文章!