SQLServerで問題が発生しました。私の仕事は、PHPを使用して単純なSQLServerベースのユーザーシステムを実現することです。データベースはMMORPGでも使用されるため、データベース構造を変更したり、スキーマをハッシュしたりすることは許可されていません。私の問題の本当の原因は、パスワードが次のアルゴリズムによってハッシュされていることです
HashBytes('MD5', REVERSE(UPPER(@ID)) + @PW)
パスワードハッシュ「0x7CEE495091E11FF9560D3D0165133322000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000」に準拠するtest123およびpwhallo123というテストユーザーを作成しました。
この時点まで、すべてが明確である必要があります。でも、クエリでデータを取得しようとすると、結果が得られません。私はこのクエリを実行しました:
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時間取り組んでいますが、問題を理解することはできません。