5

この単純な Java の例を移植したい...

J2ME での Bouncycastle の例を使用した AES 暗号化/復号化

...C# に、次の 2 つの 3 つの質問があります。

  1. 私が理解しているように、JAVA の例では、暗号化/復号化操作に AESEngine を使用しています。AESEngine と AESFastEngine と AESLightEngine の違いは何ですか? 残念ながら、ドキュメントに記載されている情報がわかりません: http://www.bouncycastle.org/docs/docs1.6/index.html

  2. 暗号化するすべてのファイルに新しい暗号化キーを使用したいと考えています。どのブロック暗号操作モードを使用する必要がありますか: AES.CBC、AES.CFB、AES.ECB、または AES.OFB http://www.bouncycastle.org/docs/docs1.6/index.html

  3. 私の場合、キー生成にAES.KeyGen128 () を使用し、一度だけ使用するため、 iv / salt を使用する必要がないという私の仮定は正しいですか?
    http://www.bouncycastle.org/docs/docs1.6/index.html

私の質問があまり混乱を引き起こさないことを願っています;-)私はあなたが私に与えることができるすべての答え、明確化、またはフィードバックに感謝します.

マイク

4

1 に答える 1

5
  1. ドキュメントを読んだところ、AESEngine、FastEngine、および LightEngine はすべて、メモリと速度のトレードオフが異なることがわかりました。これらのトレードオフがシナリオに関連するかどうかを判断するには、自分でテストする必要があります。

  2. さまざまな AES モードについて調べる必要があります。異なるモードには異なる強みと属性があり、シナリオに応じて多かれ少なかれ適用可能または望ましい場合があります。したがって、あなたの質問に対する答えは「場合による」です。

  3. 番号。IVが必要になります。ソルトに関しては、通常、実際の暗号化キーと IV を生成するためにパスフレーズと共に使用されます。多くの場合、PKBDF2 を介して行われます。これは AES の領域外ですが、一般的な使用法です。


最後に、あなたは尋ねませんでしたが.... なぜそのコードを C# に移植しているのですか? .NET には AES 暗号化が組み込まれています。何も移植する必要はありません。.NET 基本クラス ライブラリを使用するだけです。同じキーサイズとモードを使用していることを確認し、key+iv が両側で同じであることを確認してください。.NET BCL AES クラスは、J2ME の BouncyCastle と相互運用します。

于 2011-09-02T02:41:24.443 に答える