Java暗号-AESパディングの問題
-
19-08-2019 - |
質問
ブロックサイズが16バイトのAES暗号を使用しています。
16バイト文字列を暗号化しようとしても問題はありませんが、16の倍数以外の長さでは例外がスローされます。
3-DESでは、アルゴリズムの一部としてパディングタイプを指定でき、余分な作業なしで処理されます(例:DES / CBC / PKCS5Padding)が、AESでこれを指定する方法はありますか?
または、手動で16の倍数にパイトをパディングし、復号化するときにそれらを削除する必要がありますか?以下は、コードの短縮サンプルです。
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
すべての返信に感謝します!
事前に感謝します、 Ciar <!>#225; n
解決
AESでもまったく同じように機能する必要があります。つまり、パディングモードは暗号と一緒に指定する必要があります。どのパディングモードが実装されるかはプロバイダーによって異なり、そのドキュメントで説明する必要があります。
JCEのドキュメントによると: http://java.sun.com /j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA PKCS5Paddingのような標準パディングモードは常にサポートされる必要があります(少なくとも、それが私がそれを解釈する方法です)。
所属していません StackOverflow