30

AESを使用してデータを暗号化する必要がありました。調査中に、 AesCryptoServiceProviderクラスを発見しました。

私は暗号化についてほとんど知らず、初期化ベクトル(IV)が何であるかを知らなかったので、スタックオーバーフローでAESの例を検索しようとしましたが、それがこの質問につながりました。

スタックオーバーフローリンクがRijndaelManagedクラスを使用するのはなぜですか?RijndaelManagedクラスとAesCryptoServiceProviderクラスは同じことをしていますか?

4

1 に答える 1

44

AESはRijndaelに基づいていますが、ブロックサイズは128ビットに制限されています。Rijndaelは、より広範囲のブロックサイズをサポートし、多くの暗号化ライブラリは、AESを補完するために別個のRijndael実装を提供します。

Rijndaelアルゴリズムでは、128、160、192、224、および256ビットのブロックサイズがサポートされていますが、AES標準では128ビットのブロックサイズのみが指定されています。[ウィキペディア]

RijndaelManagedクラスにリンクしました。AESの同等のクラスはですAesManaged

クラス間の違いについて:ブロックサイズを128に設定してAesManaged使用するだけで、 FIPSに準拠していません。使用すると、FIPSグループポリシーフラグが設定されている場合に例外がスローされます。.NET Framework 4.6.2(2016年8月)は、AESアルゴリズムのCNGバージョンの実装であるAesCngクラスを追加しました。RijndaelManagedAesManagedRijndaelManaged

IVは、ブロックサイズと同じ長さのランダムデータであり、特定の対称動作モード(CBCモードなど)で必要になります。通常、IVは、平文の最初のブロックまたは暗号文の最初のブロックと結合(XORされます)されます。同じメッセージを同じキーで2回暗号化しても、同じ出力が得られないようにするという考え方です。

于 2012-11-21T08:32:28.480 に答える