我有一个用C#编写的应用程序。使用Net 4.0,用户将使用System.Security.Cryptography将其电子邮件密码存储到用户配置文件中。
实际密码存储在SecureString中,并使用System.Security.Cryptography.ProtectedData.Unprotect(加密数据,熵,当前用户)加密
密码仅在发送时转换为普通字符串(很快将通过https会话)
我想知道的是,熵值需要保持不变,否则你无法正确解密密码,是什么是保持眼睛不能找到熵值的最佳方法,但确保熵值将是不变?
答案 0 :(得分:0)
您必须使用相同的熵值。
制作盐渍哈希表答案 1 :(得分:-1)
我假设您使用保护进行保护并使用unprotect进行阅读。
你不需要保护熵,它不是关键。 Windows上的DPAPI使用用户的登录凭据来生成密钥。实际上,在这种情况下,熵就像密码哈希的盐值(实际上它可能实际上是向PBKDF2提供的盐)
现在,DPAPI存在问题:每个人都可以在您登录后阅读数据。我可以写一个程序,如果它可以读取你的配置文件(它可能可以)我可以进行相同的调用,自从你登录后,值解密。作为对此的轻微缓解,您可能希望在程序中硬编码部分熵值,并从配置文件中读取另一半>这并没有做太多,因为有动力的攻击者可以读取你的二进制文件,但它确实做了一些事情。