我正试图理解一些与密码学有关的C#代码,它特别使用了
然而,在网络上找到的每个地方(包括Stack Exchange上),每个人都说“使用Rfc2898DeriveBytes,因为Password *已被弃用并使用了PBKDF1”。但是,在msdn.microsoft.com的文档中,两个类之间唯一的区别似乎是Rfc *-版本明确提到了PBKDF2,而Password *则表示“PBKDF1的扩展”和“PKCS#5 v2.0”。
那么,有人可以告诉我这两个类之间的区别(如果有的话),以及为什么我应该在PBKDF2密码密钥派生方面使用其中一个而不是另一个?
现在,处理相同数据的其他代码明确使用了PBKDF2,并且有效,因此这表明
System.Security.Cryptography
中的PasswordDeriveBytes
。在.NET文档中指出PasswordDeriveBytes
使用“PBKDF1算法的一种扩展”,该文档稍后具体说明了这是“PKCS#5 v2.0标准”,即PBKDF2(就我而言)。然而,在网络上找到的每个地方(包括Stack Exchange上),每个人都说“使用Rfc2898DeriveBytes,因为Password *已被弃用并使用了PBKDF1”。但是,在msdn.microsoft.com的文档中,两个类之间唯一的区别似乎是Rfc *-版本明确提到了PBKDF2,而Password *则表示“PBKDF1的扩展”和“PKCS#5 v2.0”。
那么,有人可以告诉我这两个类之间的区别(如果有的话),以及为什么我应该在PBKDF2密码密钥派生方面使用其中一个而不是另一个?
现在,处理相同数据的其他代码明确使用了PBKDF2,并且有效,因此这表明
PasswordDeriveBytes
也使用了PBKDF2,或者在某些情况下PBKDF2与PBKDF1兼容,但我想确保不是某些随机事物的副作用,并且事情只是神奇地工作着(最终可能会以神奇和壮观的方式破裂),而没有人真正理解为什么。