암호는 원래 .NET 플랫폼에서 만들어지고 MSSQL에 저장되어있는 암호 해시로 일치해야합니다 (암호화는 아마도 SHA1입니다). 내가 할 필요가 무엇인지에 두 개의 매우 가까운 사례를 발견했습니다하지만 난 그것이 작동되도록 할 수 있었다제공된 암호와 소금에 대한 암호 해시 복제 방법 (PHP/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);
: 여기
처럼 MySQL의 테이블 모습입니다.
예 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
도와주세요!
'?z1??9t|????e&??9aK'
원래의 코드가 파손되고 물음표로 인쇄 할 수있는 ASCII 범위를 벗어나 문자를 변환 한 것으로 보인다 :
답변 해 주셔서 감사합니다. Mark, 귀하 동의합니다. 그러나 많은 사용자가있는 기존 데이터베이스가있는 경우 가능하면이 작업을 수행해야합니다. 이것은 원래 SQL Server 2008 데이터베이스에 저장되어있는 방법입니다 (바이너리 형식으로 저장되어 있다고 가정합니다). 그리고이를 MySQL 데이터베이스에 복사하여 PHP와 함께 사용해야합니다. 그 시점부터 16 진수 문자열로 인코딩하고 개선 할 수 있습니다. – crazyhorse
@crazyhorse : 운이 좋으면 데이터가 SQL Server에 올바르게 저장되었으며 잘못 내보내거나 가져 왔습니다. –
불행히도 SQL Server 프로덕션 서버에서도 똑같은 상황입니다. – crazyhorse