加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:17:35 所属栏目:asp.Net 来源:网络整理
导读:我发现将现有数据库从加密密码转换为已解密密码的令人惊讶的信息. (我能够找到更多关于转换其他方式的信息,但没有太多的帮助.) 大多数人都知道,更改web.config中的密码格式设置只会影响新用户.我有一个有数百个用户的数据库,我想将它们转换为使用散列密码,而
我发现将现有数据库从加密密码转换为已解密密码的令人惊讶的信息. (我能够找到更多关于转换其他方式的信息,但没有太多的帮助.)

大多数人都知道,更改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());
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读