2012-04-19 71 views
-1

不工作我寫了一個查詢來更新使用MD5密碼。但新密碼不起作用,還有舊密碼。以下是查詢。更新MD5值在SQL Server

UPDATE tbl_user 
SET password = HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32))) 
WHERE login_id = 'user123' 

現在,當我給ABC,因爲它不工作密碼,當我登錄到我的申請。

+0

許多事情可能是錯的怎麼回事,很遺憾。 'password'的字段類型是什麼?消費應用程序如何創建其哈希值以進行比較?有沒有涉及到你忘記使用的鹽? – Yuck 2012-04-19 12:50:17

+0

不使用MD5,它已被打破 – 2012-04-19 12:50:40

+0

呸......它的VARCHAR(32)爲密碼字段。其Java代碼也用於比較使用MD5的密碼。 – 2012-04-19 12:53:02

回答

0

我不知道,從未做過的東西完全一樣,但我認爲你需要附上密碼HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))的引號的價值,在一個正常的查詢,你會說

哦,你可能應該去掉login_id的括號。與不具有引號的密碼值,它不沒有在您的字符串的結尾是,並可能試圖插入 「HASHBYTES(‘MD5’,CAST(校驗和(‘ABC’)爲varchar(32))),其中(LOGIN_ID =「user123」)」作爲您的密碼,然後發現它已經沒有位置信息,即或者是承認你的字符串,並把它當作是在表中,不進行散列。

最簡單的事情可能是它傳遞給查詢語句之前,散列密碼。告訴我,如果這種情況在您的情況下無效,並且上述修復程序無效。

+0

以及我正在使用sql服務器,所以它把括號本身。我也會嘗試這個解決方案。 – 2012-04-20 05:04:20

+0

嗯,告訴我,如果這樣的作品,我有另一個想法。 – SpeedCrazy 2012-04-21 03:02:00

+0

SpeedCrazy ...它沒有奏效。 – 2012-04-23 09:32:03