web-dev-qa-db-ja.com

RijndaelManagedとAesCryptoServiceProvider(AES暗号化)

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

暗号化についてはほとんど知りませんが、初期化ベクトル(IV)が何なのかわかりませんでした。そのため、スタックオーバーフローでAESの例を探してみたところ、 この質問 につながりました。

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

22
Tono Nam

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

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

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

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

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

33
Duncan Jones