C#コードを理解しようとしていますが、私は手渡されました。暗号化を扱っていて、特にSystem.Security.Cryptography
のPasswordDeriveBytes
を使用しています。.NET:PasswordDeriveBytesとRfc2898DeriveBytesの相違点
.NET docsではPasswordDeriveBytes
はPBKDF2である「PKCS#5 v2.0標準」として指定された文書の後ろに「PBKDF1アルゴリズムの拡張子」を使用しています)。しかし、私が見つけたネット上のどこにでも(Stack Exchangeを含む)、誰もが「Rfc2898DeriveBytesを使用して、パスワード*が廃止され、PBKDF1を使用する」と言います。しかし、msdn.microsoft.comのドキュメントの唯一の違いは、Rfc * -versionに特にPBKDF2が言及されているようです.PBKDF2では、Password *に「PBKDF1の拡張」と「PKCS#5 v 2.0」と記載されています。
2つのクラス(もしあれば)の違いとPBKDF2パスワードキーの導出には他のものよりもむしろどちらを使うべきか教えてください。
ここで、同じデータを扱う他のコードでは明示的にPBKDF2が使用され、動作するため、PasswordDeriveBytes
でもPBKDF2も使用されているとか、PBKDF2はPBKDF1と単純に互換性がありますそれは何かの副作用ではないことを確かに知っている、そして物事は本当になぜ理解していない人はまったく魔法のように動作します(そして最終的にはおそらく魔法と壮観に壊れます)。
疑問に思ったように、物事は主に偶然に作用するもので、デザインによってはそれほどではありません... – adamski
出力データと "その他のコード"によって使用される暗号化方式/ KDF暗号化スキームがPBKDF2を使用すると判断された後に使用されるコードパスがあります。本当に「明示的にPBKDF2を使用する」からは分かりません。 – millimoose