密码需要与最初在.NET平台上创建并存储在MSSQL上的密码哈希值进行匹配(因此加密可能是SHA1)。如何复制提供的密码和salt的密码哈希值(PHP/MySQL)
这里是MySQL表的样子:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`UserName` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
`PasswordHash` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`PasswordSalt` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=12535 ;
--
-- Dumping data for table `test`
--
INSERT INTO `test` (`id`, `UserName`, `PasswordHash`, `PasswordSalt`) VALUES(9836, 'demoadmin', '?z1??9t|????e&??9aK', -1190254076);
INSERT INTO `test` (`id`, `UserName`, `PasswordHash`, `PasswordSalt`) VALUES(12534, 'sunny', '??o\\(R?8~??6>?t????o', 549612932);
我发现两个到我需要做的事情非常接近的例子,但我还是能够使它发挥作用。
例1:http://gilbert.pellegrom.me/replicating-net-password-hashing-in-php/
例2:http://www.kevinbruce.com/Blog?area_id=6&blog_id=3&ba_id=27
用户名和密码是:
首先用户:demoadmin/demotest 其次用户:晴天/ eclyptix
请帮帮忙!
感谢您的回答马克,我同意你的意见。但是,如果可能的话,我需要尽可能地完成这项工作,因为我们有一个拥有大量用户的遗留数据库。 这是他们最初存储在SQL Server 2008数据库(我会说他们存储在一个二进制格式),我们需要将它们复制到MySQL数据库,并使其与PHP的工作。从这一点上,我们可以将它们编码为HEX字符串并改进。 – crazyhorse
@crazyhorse:如果幸运的话,数据已经正确存储在SQL Server中,而您刚刚导出/导入不正确。 –
不幸的是,它在SQL Server生产服务器上的情况也完全相同。 – crazyhorse