Я пытаюсь понять какой-то C # -код, который мне вручают, который занимается криптографией и специально использует PasswordDeriveBytes
из System.Security.Cryptography
.
В .NET документах , он говорит, что PasswordDeriveBytes
использует «расширение алгоритма PBKDF1», которое позже в документе указано как «стандарт PKCS # 5 v2.0», то есть PBKDF2 (насколько я могу судить).Тем не менее, везде в сети, которую я нашел (в том числе здесь, на Stack Exchange), все говорят: «используйте Rfc2898DeriveBytes, потому что Password * устарел и использует PBKDF1».Но единственная разница в документах на msdn.microsoft.com , похоже, заключается в том, что Rfc * -версия конкретно упоминает PBKDF2, где Password * говорит «расширение PBKDF1» и «PKCS # 5 v 2.0».
Итак, кто-нибудь может мне сказать, в чем разница между двумя классами (если есть) и почему я должен использовать один, а не другой для получения ключа пароля PBKDF2?
Теперь другой код, который имеет дело с теми же данными, явно использует PBKDF2 и работает, так что можно предположить, что действительно PasswordDeriveBytes
также использует PBKDF2, или что PBKDF2 просто совместим с PBKDF1 при определенных обстоятельствах, но я хочу знать наверняка, что это не такнекоторый побочный эффект какой-то случайной вещи, и то, что все просто волшебно работает (и в конечном итоге, вероятно, волшебно и эффектно сломается), так что никто не понимает почему.