密碼需要與最初在.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