2


0

AES暗号化のためのパディングモードがJavaとC#.NETの両方で共通していることを知りたい

ありがとうBapi

3 Answer


1


なし、PKCS7、ゼロ

Dotnetは、これら3つをすべてのJCEプロバイダと同様にサポートしています。

java <→ .net AESを探しているならBouncy Castleをお勧めしますが、両方に無料のlibがあります。


0


いくつかのパディングアルゴリズムは Wikipediaで概説されています。 PKCS7がいくつかの重要なアプリケーション(たとえば、Oracleクライアント)で使用されているのを見たことがあります。 実装は簡単なので、どちらのプラットフォームでもサポートされていなくても心配する必要はありません。


0


私はクラスのプロジェクトに取り組んでいて、難しい方法でいくつかの詳細を考え出しました。 第一に、JavaはPKCS7の箱から出してのパディングを別の名前でサポートします。 それはPKCS5と呼ばれています。 JavaはPKCS7をサポートしていないが、異なる(より古い)パディングタイプをサポートしているという誤った考えのため、Bouncy Castleを使用するプログラマーもいます。 Bouncy Castleがひどいバグを抱えていたことを除けば、これは本当に重要ではないはずです。 私のプロジェクトはAESの実装に依存していました。 1つのdoFinalですべてのデータを一度に暗号化するとうまくいきますが、ブロックの暗号化はひどく間違ってしまい、データを渡すために使用されるバッファサイズによって結果が変わります。 Sunの実装に切り替えると、同じコードで正しい結果が得られました。 言うまでもありませんが、数日間のデバッグに費やしました。