首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制SqlMembershipProvider密码哈希

复制SqlMembershipProvider密码哈希
EN

Stack Overflow用户
提问于 2014-03-20 00:30:00
回答 2查看 758关注 0票数 4

我们正在将用户身份验证从提供的.NET实现迁移到我们自己的系统中。

我们希望能够支持aspNet_Membership表中存在的旧密码。

密码和Salt驻留在该表中,因此从理论上讲,我们可以重新计算SqlMembershipProivder使用的散列。

然而,我似乎找不到任何描述正在使用的算法的东西。检查成员资格提供程序告诉我,它使用HMACSHA256来计算散列。

然而,存储的口令散列是20字节长,这告诉我它们必须做的不仅仅是简单地计算口令和盐的sha256散列。

会员资格提供者会不会是在撒谎?它是在幕后使用SHA1还是RIPEMD?

或者,如果我可以访问他们正在使用的加密提供商,我可以只传递旧密码和盐到其中……我不一定需要重新发明轮子。

EN

回答 2

Stack Overflow用户

发布于 2015-12-15 10:36:48

是的,成员资格类可能会说谎。SqlMembershipProvider似乎必须具有passwordCompatMode=Framework40属性,才能实际使用ASP.NET 4中添加的散列和加密选项。如果没有该属性,它将使用旧的兼容模式,该模式忽略成员身份散列算法,默认为SHA1。创建SqlMembershipProvider的一个实例,并查看调试器中的_LegacyPasswordCompatibilityMode属性以及私有s_HashAlgorithm成员(该成员仅在散列密码后设置)。它们可能会分别显示"Framework20“和"SHA1”。谢谢你的问题,它帮助我找到了答案。

以下是我的问题和答案,以及更多细节:https://stackoverflow.com/a/34280119/263832

票数 1
EN

Stack Overflow用户

发布于 2014-11-01 00:31:15

如果密码格式是1,那么你不能重新计算哈希值--这是一个不可逆的算法。

您可以更改每个用户的密码格式,并设置新密码。

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

https://stackoverflow.com/questions/22512269

复制
相关文章

相似问题

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