2

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

实际密码存储在 SecureString 中,并使用 System.Security.Cryptography.ProtectedData.Unprotect(encrypted data, entropy, currentuser) 加密

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

我想知道的是,熵值需要保持不变,否则您无法正确解密密码,防止窥探找到熵值的最佳方法是什么,但要确保熵值是恒定的?

4

2 回答 2

0

您必须使用相同的熵值。

您可以根据熵值制作一个加盐哈希表这是在 Db 中加盐和存储密码的方法吗?

于 2012-04-19T22:55:49.027 回答
-1

我假设您的意思是,它受到保护的保护,而不受保护的读取。

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

现在,DPAPI 有一个问题:一旦您登录,每个人都可以读取数据。例如,我可以编写一个程序,如果它可以读取您的配置文件(并且可能可以),我可以进行相同的调用,并且自从您登录后,该值就会解密。作为对此的轻微缓解,您可能希望在程序中对熵值的一部分进行硬编码,并从配置文件中读取另一半做点什么。

于 2012-04-20T14:56:20.873 回答