Java と C#.NET の両方で一般的な AES 暗号化のパディング モードを知りたい
ありがとうバピ
なし、PKCS7、ゼロ
Dotnet は、すべての JCE プロバイダーと同様に、これら 3 つをサポートしています。
java<->.net AES を探しているなら、Bouncy Castle をお勧めします。どちらも無料のライブラリがあります。
私はクラスのプロジェクトに取り組んでいて、難しい方法でいくつかの詳細を見つけました。まず、Java はそのままで、別の名前で PKCS7 パディングをサポートします。PKCS5 と呼ばれます。一部のプログラマーは、Java は PKCS7 をサポートしていないが、別の (古い) パディング タイプをサポートしているという誤った考えのために、Bouncy Castle を使用しています。これは、Bouncy Castle にひどいバグがあることが判明したことを除けば、それほど重要ではありません。私のプロジェクトは、AES の実装に依存していました。単一の doFinal ですべてのデータを一度に暗号化する場合は機能しますが、ブロックの暗号化はひどく失敗し、データを渡すために使用されるバッファー サイズによって結果が変わることさえあります。Sun の実装に戻すと、同じコードで正しい結果が得られました。言うまでもなく、そのために数日間のデバッグが必要でした。
いくつかのパディング アルゴリズムがWikipediaで概説されています。いくつかの重要なアプリケーション (たとえば、Oracle クライアント) で PKCS7 が使用されているのを見てきました。実装は非常に簡単なので、どちらかのプラットフォームがすぐにサポートしていなくても心配する必要はありません。