をしてくださいサポートします見てくださいhere。
PKCS#5パディングは、1〜8バイトのパディングを意味します。パディングバイト自体には、パディングバイト数がバイトとしてエンコードされています。 PKCS#5パディングはDESに指定されていましたが、ブロックサイズが8バイトの任意のブロック暗号に適しています。
今やDES仕様、さらにはパスワードベースの暗号化のためのPKCS#5仕様さえもJavaに先立ってかなり長い時間がかかります。 2002年にAESは標準化されましたが、Javaを経てずっと待っていて、Java 2も導入されました。 AESが登場する前に、(3つの)DESとPKCS#5パディングがJavaに統合されました。
Java(正確には、Sun JCEプロバイダがAES機能を獲得したときには、ブロックサイズが16バイトのパディング方法が必要でした。 PKCS#7は、2〜255バイトのブロックサイズ(ゼロベースの符号なし整数をエンコードする場合は1バイトの最大値)に対して定義されていることを除いて、この埋め込み方法をis identical to PKCS#5 paddingと指定します。しかし、パディングの方法は既にそこにありました。それは"PKCS5Padding"
と命名されました。したがって、新しい名前を導入する代わりに、"PKCS5Padding"
を単に再利用しました。
PKCS#5のパディングが正しくないため、サンプロバイダは実際に"PKCS7Padding"
をサポートする必要があります。これは単なるJavaの命名問題ではなく、暗号プロトコルを実装しようとする開発者やJavaに他のアプリケーションを移植しようとする開発者にとっては問題になります。今のところ"PKCS7Padding"
の代わりに"PKCS5Padding"
を使用してください。
ECBはCPA安全ではないことに注意してください。代わりにCBCを使用してください(保存されたデータの機密性を欲する場合)。 –