我们正在将用户身份验证从提供的.NET实现迁移到我们自己的系统。
我们希望能够支持存在于aspNet_Membership表中的旧密码。
该表中存储了密码和Salt,因此理论上我们可以重新计算SqlMembershipProivder正在使用的哈希值。
然而,我找不到任何描述正在使用的算法的内容。检查成员资格提供程序告诉我它正在使用HMACSHA256来计算哈希值。
然而,存储的密码哈希值为20个字节,这告诉我它们必须做更多的工作,而不仅仅是计算密码和salt的sha256哈希值。
成员资格提供程序会撒谎吗?它是否在底层使用SHA1或RIPEMD?
或者,如果我可以访问他们正在使用的加密提供程序,我就可以将旧密码和Salt传递给它……我不一定需要重复造轮子。
我们希望能够支持存在于aspNet_Membership表中的旧密码。
该表中存储了密码和Salt,因此理论上我们可以重新计算SqlMembershipProivder正在使用的哈希值。
然而,我找不到任何描述正在使用的算法的内容。检查成员资格提供程序告诉我它正在使用HMACSHA256来计算哈希值。
然而,存储的密码哈希值为20个字节,这告诉我它们必须做更多的工作,而不仅仅是计算密码和salt的sha256哈希值。
成员资格提供程序会撒谎吗?它是否在底层使用SHA1或RIPEMD?
或者,如果我可以访问他们正在使用的加密提供程序,我就可以将旧密码和Salt传递给它……我不一定需要重复造轮子。
Membership.HashAlgorithmType
= "HMACSHA256")匹配!有进展了。现在唯一的问题是,“到底是怎么回事?” - xr280xr