你如何确保你的熵值

时间:2012-04-19 20:14:15

标签: c# cryptography entropy .net

我有一个用C#编写的应用程序。使用Net 4.0,用户将使用System.Security.Cryptography将其电子邮件密码存储到用户配置文件中。

实际密码存储在SecureString中,并使用System.Security.Cryptography.ProtectedData.Unprotect(加密数据,熵,当前用户)加密

密码仅在发送时转换为普通字符串(很快将通过https会话)

我想知道的是,熵值需要保持不变,否则你无法正确解密密码,是什么是保持眼睛不能找到熵值的最佳方法,但确保熵值将是不变?

2 个答案:

答案 0 :(得分:0)

您必须使用相同的熵值。

您可以使用熵值Is this the way to salt and store a Password in Db?

制作盐渍哈希表

答案 1 :(得分:-1)

我假设您使用保护进行保护并使用unprotect进行阅读。

你不需要保护熵,它不是关键。 Windows上的DPAPI使用用户的登录凭据来生成密钥。实际上,在这种情况下,熵就像密码哈希的盐值(实际上它可能实际上是向PBKDF2提供的盐)

现在,DPAPI存在问题:每个人都可以在您登录后阅读数据。我可以写一个程序,如果它可以读取你的配置文件(它可能可以)我可以进行相同的调用,自从你登录后,值解密。作为对此的轻微缓解,您可能希望在程序中硬编码部分熵值,并从配置文件中读取另一半>这并没有做太多,因为有动力的攻击者可以读取你的二进制文件,但它确实做了一些事情。