SQL Server에 문제가 있습니다. 내 작업은 PHP로 간단한 SQL Server 기반의 사용자 시스템을 구현하는 것입니다. 데이터베이스는 MMORPG에서도 사용되므로 데이터베이스 구조 또는 해시 알고리즘을 변경할 수 없습니다. 내 문제의 진짜 원인은 암호가 나는 테스트 사용자라는 test123을 작성암호가 해시 알고리즘 (SQL Server)과 일치하지 않습니다.
HashBytes('MD5', REVERSE(UPPER(@ID)) + @PW)
다음 고리즘에 의해 해시되어있다 PW hallo123 무엇을이 시점까지 암호 해시 "0x7CEE495091E11FF9560D3D01651333220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
을 준수 모든 것이 명확해야합니다. 글쎄, 쿼리로 데이터를 가져 오려고하면 결과가 없습니다. 다음 쿼리를 실행했습니다 :
mssql_query("SELECT * FROM [DB_Member].[dbo].[Member] WHERE ID = 'test123' AND PW = HashBytes('MD5', REVERSE(UPPER('test123')) + 'hallo123')");
결과를 반환합니다. 내가 직접 쿼리
mssql_query("SELECT * FROM [DB_Member].[dbo].[Member] WHERE ID = 'test123' AND PW = 0x7CEE495091E11FF9560D3D01651333220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
를 실행한다면 나는 약 8 시간 동안 지금이 고심하고있어 문제
없이 데이터를 얻을 수 있지만 문제를 알아낼 수 없습니다.
위대한 답변, 감사합니다! 쿼리가 정확히 서버에서 수신되는 방식을 살펴 보는 방법이 있습니까? 그런 다음 생성 된 해시를 확인할 수 있습니다. 감사합니다. – Thomas
@ 토마스 - 암호를 설정할 때 SQL Server 프로파일 러를 사용하여 서버로 전송되는 내용을 볼 수 있습니다.추적을 설정하고 암호를 변경하기 직전에 시작한 다음 가능한 한 빨리 해제하십시오. 그런 다음 로그를 읽고 암호를 변경하는 문구를 찾고 매개 변수의 내용을 살펴볼 필요가 있습니다. 내가 준 예는 그들이 공백으로 채워진 곳이었다. 그들은 다른 어떤 것으로 채워질 수 있습니다. –