AESを使用してデータを暗号化する必要がありました。調査中に AesCryptoServiceProvider クラスを発見しました。
暗号化についてはほとんど知りませんが、初期化ベクトル(IV)が何なのかわかりませんでした。そのため、スタックオーバーフローでAESの例を探してみたところ、 この質問 につながりました。
スタックオーバーフローリンクがRijndaelManagedクラスを使用するのはなぜですか? RijndaelManaged と AesCryptoServiceProvider クラスは同じことをしていますか?
AESはRijndaelに基づいていますが、ブロックサイズは128ビットに制限されています。 Rijndaelはより広い範囲のブロックサイズをサポートしており、多くの暗号ライブラリは、AESを補完するための個別のRijndael実装を提供しています。
Rijndaelアルゴリズムでは、128、160、192、224、256ビットのブロックサイズがサポートされていますが、AES標準では128ビットのブロックサイズのみが指定されています。 [ ウィキペディア ]
RijndaelManaged
クラスにリンクしました。 AESの同等のクラスは AesManaged
です。
クラス間の違いについて:AesManaged
は、ブロックサイズを128に設定してRijndaelManaged
を使用するだけです。AesManaged
とRijndaelManaged
はFIPSに準拠し、FIPSグループポリシーフラグが設定されている場合に使用すると例外がスローされます。NETFramework 4.6.2(2016年8月)に AesCng が追加されましたクラス、AESアルゴリズムの [〜#〜] cng [〜#〜] バージョンの実装。
An IV は、ブロックサイズと同じ長さのランダムデータであり、特定の対称動作モード(CBCモードなど)で必要です。通常、IVは、平文の最初のブロックまたは暗号文の最初のブロックと結合(XOR処理)されます。アイデアは、同じメッセージを同じキーで2回暗号化しても同じ出力にならないようにすることです