不工作我寫了一個查詢來更新使用MD5密碼。但新密碼不起作用,還有舊密碼。以下是查詢。更新MD5值在SQL Server
UPDATE tbl_user
SET password = HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))
WHERE login_id = 'user123'
現在,當我給ABC,因爲它不工作密碼,當我登錄到我的申請。
不工作我寫了一個查詢來更新使用MD5密碼。但新密碼不起作用,還有舊密碼。以下是查詢。更新MD5值在SQL Server
UPDATE tbl_user
SET password = HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))
WHERE login_id = 'user123'
現在,當我給ABC,因爲它不工作密碼,當我登錄到我的申請。
我不知道,從未做過的東西完全一樣,但我認爲你需要附上密碼HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))
的引號的價值,在一個正常的查詢,你會說
哦,你可能應該去掉login_id的括號。與不具有引號的密碼值,它不沒有在您的字符串的結尾是,並可能試圖插入 「HASHBYTES(‘MD5’,CAST(校驗和(‘ABC’)爲varchar(32))),其中(LOGIN_ID =「user123」)」作爲您的密碼,然後發現它已經沒有位置信息,即或者是承認你的字符串,並把它當作是在表中,不進行散列。
最簡單的事情可能是它傳遞給查詢語句之前,散列密碼。告訴我,如果這種情況在您的情況下無效,並且上述修復程序無效。
以及我正在使用sql服務器,所以它把括號本身。我也會嘗試這個解決方案。 – 2012-04-20 05:04:20
嗯,告訴我,如果這樣的作品,我有另一個想法。 – SpeedCrazy 2012-04-21 03:02:00
SpeedCrazy ...它沒有奏效。 – 2012-04-23 09:32:03
許多事情可能是錯的怎麼回事,很遺憾。 'password'的字段類型是什麼?消費應用程序如何創建其哈希值以進行比較?有沒有涉及到你忘記使用的鹽? – Yuck 2012-04-19 12:50:17
不使用MD5,它已被打破 – 2012-04-19 12:50:40
呸......它的VARCHAR(32)爲密碼字段。其Java代碼也用於比較使用MD5的密碼。 – 2012-04-19 12:53:02