资料保护API (DPAPI)的资料

本文关键字:DPAPI API 保护 | 更新日期: 2023-09-27 17:50:41

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

建议使用数据保护API (DPAPI)。我不熟悉它,从互联网上的研究,很少有关于它的信息。

谁能指出进一步的信息的方向?或者给我一个如何设置和使用它的概述。

资料保护API (DPAPI)的资料

Data Protection API主要用于保护用户凭证下的加密密钥和秘密。如果您想在数据库中存储散列密码,那么DAPI并不是您真正想要的。

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

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