Im bereitgestellten Code nach der Entschlüsselung mit AES/CBC mit PKCS5-Auffüllung der Anfangsteil des Klartextes Scheint beschädigt zu sein.
Das Problem liegt an es wird versäumt, die verschlüsselten und entschlüsselten Bytes in Zeichenfolgen umzuwandeln. In der Entschlüsselungsschleife wird die Ausgabe der Chiffre direkt in den Ausgabestream geschrieben. Dadurch werden die ersten Bytes des Klartextes, die die Auffüllinformationen enthalten, fälschlicherweise als Teil der Nachricht interpretiert.
Um dieses Problem zu lösen, konvertieren Sie den Chiffretext und den Klartext in Zeichenfolgen mit geeigneten Zeichenkodierungen. Dadurch wird sichergestellt, dass die Auffüllung korrekt gehandhabt wird und der Klartext korrekt angezeigt wird.
// 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);
Das obige ist der detaillierte Inhalt vonWarum erzeugt meine Java AES/CBC-Entschlüsselung beschädigten Klartext?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!