微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/aspnet/250183.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐