ada*_*ski 11 .net c# pbkdf2 pkcs#5
我想了解一些C#-code,我一直在流传,这与密码交易,具体使用PasswordDeriveBytes由System.Security.Cryptography.
在.NET文档中,它说PasswordDeriveBytes使用"PBKDF1算法的扩展",后面在指定为"PKCS#5 v2.0标准"的文档中,这是PBKDF2(据我所知).我发现网上的所有地方(包括这里的Stack Exchange),但每个人都说"使用Rfc2898DeriveBytes,导致密码*被弃用并使用PBKDF1".但msdn.microsoft.com上文档的唯一区别似乎是Rfc*-version特别提到了PBKDF2,其中Password*表示"PBKDF1的扩展"和"PKCS#5 v 2.0".
那么,任何人都可以告诉我两个类之间的区别(如果有的话)以及为什么我应该使用一个而不是另一个用于PBKDF2密码密钥推导?
现在,处理相同数据的其他代码明确使用PBKDF2,并且可以工作,因此这表明确实PasswordDeriveBytes也使用了PBKDF2,或者PBKDF2在某些情况下只与PBKDF1兼容,但我想确切地知道它是不是一些随机事物的副作用,并且事情只是神奇地起作用(并且最终可能会神奇地和惊人地突破)而没有任何人真正理解为什么.
PKCS#5 v2.0定义了 PBKDF1 和 PBKDF2,前者是出于向后兼容性的原因,并且还建议您在新应用程序中使用 PBKDF2。我不知道为什么后者比前者更好,但这两个 .NET 类似乎确实使用不同但可互操作的算法。(可能是因为仅交换结果密钥,而不是输入 + KDF。)