我试图理解一些 C# 代码,我已经收到了,它处理密码学,特别PasswordDeriveBytes
是从System.Security.Cryptography
.
在.NET 文档中,它说PasswordDeriveBytes
使用“PBKDF1 算法的扩展”,该算法稍后在文档中指定为“PKCS#5 v2.0 标准”,即 PBKDF2(据我所知)。但是,我在网上找到的任何地方(包括 Stack Exchange 上的此处)都说“使用 Rfc2898DeriveBytes,因为不推荐使用 Password* 并使用 PBKDF1”。但在msdn.microsoft.com上的文档中唯一的区别似乎是 Rfc*-version 特别提到了 PBKDF2,其中 Password* 表示“PBKDF1 的扩展”和“PKCS#5 v 2.0”。
那么,谁能告诉我这两个类(如果有的话)有什么区别以及为什么我应该使用一个而不是另一个来推导 PBKDF2 密码密钥?
现在,处理相同数据的其他代码明确使用 PBKDF2,并且可以工作,因此这表明确实PasswordDeriveBytes
也使用 PBKDF2,或者 PBKDF2 在某些情况下只是与 PBKDF1 兼容,但我想确定它是不是一些随机事物的副作用,而且事情只是神奇地起作用(最终可能会神奇而壮观地破坏),而没有人真正理解为什么。