我想匹配一個md5 has(通過php生成)到其在SQLExpress數據庫中的原始值。MD5哈希不匹配
我用我的SQL查詢
master.sys.fn_varbintohexsubstring(0, HASHBYTES('MD5', 'ID'), 1, 0)
在哪裏「ID」是數據庫領域的以下功能。
但是他們似乎都爲md5散列返回不同的值。我一直使用'12290'作爲靜態值來測試它。
PHP的md5()返回:0bd81786a8ec6ae9b22cbb3cb4d88179
下面的SQL語句返回相同的輸出:
DECLARE @password VARCHAR(255)
SET @password = master.sys.fn_varbintohexsubstring(0, HASHBYTES('MD5', '12290'), 1, 0)
SELECT @password
然而,當我運行從表下面的語句:
SELECT ID, master.sys.fn_varbintohexsubstring(0, HASHBYTES('MD5', CONVERT(NVARCHAR(255), ID)), 1, 0) AS temp
FROM Clients
ORDER BY ID ASC
的與「ID」值12290匹配的'temp'值返回:1867dce5f1ee1ddb46ff0ccd1fc58e03
任何有關此事的幫助將不勝感激!
感謝
我不熟悉您正在使用的轉換功能,但爲什麼不只是做一個直接比較?這只是一個字符串,所以將它與從PHP獲得的哈希值進行比較? – kinakuta 2011-06-10 08:09:56
你用'VARCHAR()'而不是'NVARCHAR()'試過了嗎? – 2011-06-10 08:15:32
使用VARCHAR()代替工作,謝謝! – baked 2011-06-10 09:12:16