/ /暗号化アルゴリズムには内部ハッシュアルゴリズムが必要ですか? - c#、暗号化、暗号化、ハッシュ、エース

暗号化アルゴリズムには内部ハッシュアルゴリズムが必要ですか? - c#、暗号化、暗号化、ハッシュ、エース

私がC#を使ってAES対称暗号を実装すると、私は気付いた:

PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltBytesArray, hashAlgorithmName, numPasswordIterations);

AES暗号化にハッシュアルゴリズムを使用する必要があるのはなぜですか?彼らは分離しているのですか?あるいは、ハッシュアルゴリズムは安全な鍵を作成するためだけに使用されていますか?

AESアルゴリズムは内部的にハッシュアルゴリズムを使用していませんか?

回答:

回答№1は2

PasswordDeriveBytesは、AESの一部ではなく、パスワードから暗号化キーを導出するアルゴリズムを実装しています。アルゴリズムには、ハッシュアルゴリズムの使用が含まれます。


回答№2の場合は0

PasswordDeriveBytes 対称鍵を導出するために使用されます。IVで暗号化/復号化に使用します。 PasswordDeriveBytesはパスキー(あなたの場合はパスワード)を取得し、ソルト(あなたのケースではsaltBytesArray)を追加し、SHAまたはMD5などの指定したアルゴリズムでハッシュします。 "n"何回も(あなたのケースではnumPasswordIterations)あなたresulatantバイト配列。

このメソッドは、キーを派生させるためにのみ使用されます。これは、言い換えれば、暗号化の復号化とは何の関係もありません。