Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MembershipProvider.GetPassword算法_Php_Asp.net_Asp.net Membership_Dotnetnuke_Mcrypt - Fatal编程技术网

Php MembershipProvider.GetPassword算法

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文档中了解,这些密码可以解密。有没有一

我们正在将一个ASP站点(使用DotNetNuke)转换为一个新的PHP站点。我们现在唯一拥有的就是现有数据库的完整导出。其中一个表称为“aspnet_成员资格”,包含以下字段:

  • 密码(看起来像base64)
  • PasswordFormat(始终为值2)
  • PasswordSalt(看起来像base64)
  • PasswordQuestion(始终为空)
  • PasswordAnswer(始终为空)
我们希望解码这些密码并将其散列以适合我们自己的框架。据我从.NET文档中了解,这些密码可以解密。有没有一种算法可以做到这一点,或者比这更复杂?如果我们在当前服务器上创建ASP脚本,是否可能


提前感谢

不幸的是,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。