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());
}

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....