有关Data Protection API(DPAPI)的信息

ama*_*eur 4 c# security asp.net-mvc hash dpapi

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

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

任何人都可以指出有关它的进一步信息的方向吗?或者给我一个如何设置和使用它的概述等.

mfa*_*nto 7

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

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


Bri*_*ers 5

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