Необязательно, вы все равно могли бы указать, какая схема шифрования / KDF используется выходными данными, и «другой код», который вы упоминаете, является путем кода, используемым после того, как определено, что схема шифрования использует PBKDF2. Не могу сказать, просто из "явно использует PBKDF2".

аюсь понять какой-то 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 при определенных обстоятельствах, но я хочу точно знать, что это не какой-то побочный эффект какой-то случайной вещи, и что все просто волшебным образом работает (и в конечном итоге, вероятно, волшебно и эффектно сломается) и никто не понимает почему.

Ответы на вопрос(4)

Ваш ответ на вопрос