asp.net – 将密码格式从加密更改为哈希

我发现将现有数据库从加密密码转换为已解密密码的令人惊讶的信息. (我能够找到更多关于转换其他方式的信息,但没有太多的帮助.)

大多数人都知道,更改web.config中的密码格式设置只会影响新用户.我有一个有数百个用户数据库,我想将它们转换为使用散列密码,而不用更改现有的密码.

其他人是否熟悉如何处理这个问题?感谢任何提示.

解决方法

这是我开始看看我有多远的方法

>在我的web.config中创建两个MembershipProviders,一个用于加密密码,一个用于散列.
>循环使用加密密码提供程序的所有用户. (SqlMembershipProvider.GetAllUsers)
>使用加密密码提供程序获取用户密码. (MembershipUser.GetPassword)
>使用散列密码提供程序将用户密码更改为相同的密码. (MembershipUser.ChangePassword)

那就是这样的:

<membership defaultProvider="HashedProvider">
        <providers>
            <clear />
            <add name="HashedProvider" connectionStringName="MembershipConnectionString" enablePasswordRetrieval="false"  requiresQuestionAndAnswer="false" applicationName="MyApp" passwordFormat="Hashed"  type="System.Web.Security.sqlMembershipProvider" />
            <add name="EncryptedProvider" connectionStringName="MembershipConnectionString" enablePasswordRetrieval="true" requiresQuestionAndAnswer="false" applicationName="MyApp" passwordFormat="Encrypted" type="System.Web.Security.sqlMembershipProvider" />
        </providers>
    </membership>

码:

sqlMembershipProvider hashedProvider = (sqlMembershipProvider)Membership.Providers["HashedProvider"];
sqlMembershipProvider encryptedProvider = (sqlMembershipProvider)Membership.Providers["EncryptedProvider"];

int unimportant;
foreach (MembershipUser user in encryptedProvider.GetAllUsers(0,Int32.MaxValue,out unimportant ))
{
    hashedProvider.ChangePassword(user.UserName,user.GetPassword(),user.GetPassword());
}

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR&#160;ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...