Tag: pkcs#5

C#中的PKCS5Padding

我需要使用DESede pkcs5填充来加密字符串。 但是C#只提供PKCS7填充。 那我该怎么做呢?

Rfc2898DeriveBytes(PBKDF2)实现中密钥大小的重要性

这是我使用.NET中提供的Rfc2898DeriveBytes类来“散列”(或导出 PKCS标准的PBKDF2实现中调用的密钥 )密码字符串的代码 : int saltSize = 256; int iterations = 1000; int keySize = 20; // The parameter I’m not sure of var deriveBytes = new Rfc2898DeriveBytes(“mypassword”, saltSize, iterations); byte[] salt = deriveBytes.Salt; byte[] key = deriveBytes.GetBytes(keySize); 现在,我知道盐的大小并不重要(只要它足以确保随机盐是独特的),但关键尺寸呢? 更长的密钥是否能提供更强的安全性来抵御攻 (笔记: 1.性能问题不在我这里导入,显然更长的盐或更长的密钥将花费更多的时间让GetBytes返回一个值。 2.我想使用这个“哈希”将它们存储在数据库中,而不是在加密方案中使用它们)

.NET:PasswordDeriveBytes和Rfc2898DeriveBytes之间的区别

我正在尝试理解一些C#代码,我已经处理了密码学,并且特别使用了System.Security.Cryptography PasswordDeriveBytes 。 在.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兼容,但我想确切地知道这不是一些随机事物的副作用,并且事情只是神奇地起作用(并且最终可能会神奇地和惊人地突破)而没有人真正理解为什么。