有关Data Protection API(DPAPI)的信息

我目前正在编写ac #mvc web应用程序,其中从用户获取密码并存储在数据库中 – sql server。 我需要一种散列密码的方法。

建议使用Data Protection API(DPAPI)。 我不喜欢它和互联网上的研究,很少有信息存在。

任何人都可以指出方向获取更多信息吗? 或者给我一个如何设置和使用它的概述等。

Data Protection API主要用于保护用户凭据下的加密密钥和机密。 如果要在数据库中存储散列密码,DAPI实际上并不是您想要的。

ASP.NET成员资格提供程序用于管理用户,包括使用salt的散列密码。 遗憾的是,似乎没有一种方法只返回散列密码,因此如果您不需要额外的function,可能需要从CodeFirst Membership Provider中提取相关代码(请参阅源代码中的Crypto.cs)码)。 这里的优点是这个成员资格提供程序使用PBKDF2来派生哈希,这对于轮数来说更能抵抗暴力攻击。 它也是StackOverflow本身使用的方法。

.Net有一个名为ProtectedData的DPAPI包装类。 它非常易于使用,只包含两种静态方法: ProtectUnprotect 。 可以在此处找到How-to文章。 DPAPI不​​需要密钥,因为它使用登录用户的凭据或计算机的凭据来执行加密,具体取决于您在调用Protect时选择的范围。 请注意,如果您打算将加密数据存储在数据库中,则必须确保始终使用相同的Windows用户帐户或计算机(同样,具体取决于加密范围),否则您将无法解密数据。 因此,根据您的应用程序,此API可能不是最佳的。 它主要用于在单个计算机上进行本地加密,而不是用于分布式应用程序。