Php MembershipProvider.GetPassword算法
我们正在将一个ASP站点(使用DotNetNuke)转换为一个新的PHP站点。我们现在唯一拥有的就是现有数据库的完整导出。其中一个表称为“aspnet_成员资格”,包含以下字段:Php MembershipProvider.GetPassword算法,php,asp.net,asp.net-membership,dotnetnuke,mcrypt,Php,Asp.net,Asp.net Membership,Dotnetnuke,Mcrypt,我们正在将一个ASP站点(使用DotNetNuke)转换为一个新的PHP站点。我们现在唯一拥有的就是现有数据库的完整导出。其中一个表称为“aspnet_成员资格”,包含以下字段: 密码(看起来像base64) PasswordFormat(始终为值2) PasswordSalt(看起来像base64) PasswordQuestion(始终为空) PasswordAnswer(始终为空) 我们希望解码这些密码并将其散列以适合我们自己的框架。据我从.NET文档中了解,这些密码可以解密。有没有一
- 密码(看起来像base64)
- PasswordFormat(始终为值2)
- PasswordSalt(看起来像base64)
- PasswordQuestion(始终为空)
- PasswordAnswer(始终为空)
提前感谢不幸的是,PasswordFormat中的值2告诉我们这些密码是散列的,可能是使用SHA1(您可以在web.config中检查)。抱歉,无法可靠地恢复原始密码
*编辑:当然,除非您知道特定哈希函数中存在特定的加密弱点。不幸的是,PasswordFormat中的值2告诉我们这些密码是哈希的,可能是使用SHA1(您可以在web.config中检查这一点)。抱歉,无法可靠地恢复原始密码 *编辑:当然,除非您知道特定散列函数中存在特定的加密弱点。我认为2表示“加密”,而不是“散列”(参见定义) 加密意味着您可以实际解密它,但您需要存储在创建这些密码的物理机器的配置文件(查看我发送的链接)中的机器密钥。如果您只有数据库的副本,那么您就不能这样做。我认为2的意思是“加密的”,而不是“散列的”(参见定义)
加密意味着您可以实际解密它,但您需要存储在创建这些密码的物理机器的配置文件(查看我发送的链接)中的机器密钥。如果你只有一份数据库副本,那么你就不能这样做。哇,是的,事实上,西蒙·穆里埃(下面)说的2是对的,意思是“加密的”,只要你在.NET 3.5或更高版本上。我现在无法让Reflector出来检查,但他们似乎在不同版本之间切换了枚举顺序。哇,是的,实际上Simon Mourier(下面)是对的,大约2表示“加密”,前提是您使用的是.NET 3.5或更高版本。我现在无法让Reflector出来检查,但他们似乎在不同版本之间切换了枚举顺序。好的,感谢您的回复ojb,特别是Simon,我能够检索Web.config的内容,所以我们现在有了decryptionKey和validationKey。加密方法设置为“3DES”。这有什么意义吗?我想现在应该可以用PHP mcrypt对其进行解密,但我似乎找不到正确的参数。。。。不知道是否可以用PHP实现这一点。使用.NET,我认为可以使用GetPassword方法重用成员资格提供程序:new SqlMembershipProvider().GetPassword(username,passwordAnswer)@西蒙·穆里尔的观点都是正确的。您需要原始的机器密钥,SqlMembershipProvider.GetPassword方法可以工作,还有一个MembershipUser.GetPassword方法不需要答案参数。最后,我检查了一个我知道使用加密的数据库,PasswordFormat字段是2。好的,感谢您的回复ojb,特别是Simon,我能够检索Web.config的内容,所以我们现在有了decryptionKey和validationKey。加密方法设置为“3DES”。这有什么意义吗?我想现在应该可以用PHP mcrypt对其进行解密,但我似乎找不到正确的参数。。。。不知道是否可以用PHP实现这一点。使用.NET,我认为可以使用GetPassword方法重用成员资格提供程序:new SqlMembershipProvider().GetPassword(username,passwordAnswer)@西蒙·穆里尔的观点都是正确的。您需要原始的机器密钥,SqlMembershipProvider.GetPassword方法可以工作,还有一个MembershipUser.GetPassword方法不需要答案参数。最后,我检查了我知道使用加密的一个数据库,PasswordFormat字段为2。