首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SqlMembershipProvider更改为使用MD5、Joomla样式的密码

将SqlMembershipProvider更改为使用MD5、Joomla样式的密码
EN

Stack Overflow用户
提问于 2013-05-20 04:38:10
回答 1查看 582关注 0票数 0

我正在尝试使用默认的asp.net表和提供程序将用户从Joomla数据库迁移到自定义数据库。从理论上讲,我可以通过更改web.config将散列类型从默认(SHA)更改为MD5,但是,当登录时报告无效的密码(或用户名,但我怀疑是这样的)。检查aspnet_Membership表和Joomla_users表,我可以看到每个用户都有相同的password和Salt值(Joomla1.7实际上将其存储为password:salt,但这很容易分成两个字段)。两者似乎都是base64格式的,并且通过ASP默认登录控件添加一个用户会导致新用户的两个类似的字段(尽管盐是随机的,所以我不能与相同的已知密码进行比较)。

下面是我的web.config的一段摘录:

代码语言:javascript
复制
<system.web>
  <machineKey validation="MD5"/>
  ...
<membership hashAlgorithmType="MD5">
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider"
         type="System.Web.Security.SqlMembershipProvider"
         connectionStringName="UserAuth"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         passwordFormat="Hashed"
         applicationName="/" />
  </providers>
</membership>
</system.web>

有一件事我不确定,那就是它是md5、Md5还是MD5 (我在谷歌搜索时已经在代码示例中看到了后两者)。然而,我可以写一些无稽之谈,而应用程序似乎不会眨眼。

除非别无选择,否则我并不特别希望编写一个自定义的成员资格提供程序。

下面是一些PHP,它们将Joomla散列密码与作为参数提供给此函数的密码进行比较:

代码语言:javascript
复制
                $user_id = mysql_result($result, 0, 'id');
                $db_password = mysql_result($result, 0, 'password');
                $joomla = &New JConfig;
                list($md5pass, $saltpass) = split(":", $db_password);
                $md5_password = md5($user_password.$saltpass);
                if (strcmp($md5_password, $suppliedpass) == 0)
                {
                    return $user_id;
                }

要么是ASP版本忽略了我的md5请求,要么是它以某种其他方式存储了它,或者是我没有告诉它正确使用md5,或者...?我不想告诉4000个用户重置他们的密码,尽管我知道现在不推荐使用md5。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-20 04:56:32

我想我已经解决了。在Joomla中,通过PHP代码将md5应用于pass+salt。在SqlMembershipProvider.cs中,它被应用于salt+pass。

SqlMembershipProvider.cs是通过SQLMembershipProvider - source code找到的-也许不是真正的来源,但我看不出有什么理由在这一特定方面与真正的来源不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16639257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档