我試圖執行一次登錄檢查,將存儲在數據庫中的憑證重新存入數據庫,其中電子郵件是純文本並且密碼保存爲SHA1。目前,用戶已經手動創建。爲了檢查登錄細節,我決定使用存儲過程。 這裏的問題:SHA1密碼加密錯誤
下面的查詢中SHA1返回密碼:
SELECT HASHBYTES('SHA1', 'password')
// returns 0x5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8
以下查詢確認用戶是否存在:
SELECT COUNT(*) from users where email='[email protected]'
and password='0x5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8' // returns 1
現在來這裏的存儲過程(提取的select語句從「密碼」是一個佔位符的整個過程),它似乎不應該返回1,因爲它應該:
SELECT COUNT(*) from users where email='[email protected]'
and password=(SELECT HASHBYTES('SHA1', 'password')) // returns 0
有誰知道爲什麼?
什麼是數據類型的'password'?你是否存儲一個字符串或varbinary?爲什麼你的varbinary值用引號括起來(第二個查詢)? –