ホームページ > 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート