我试图执行一次登录检查,将存储在数据库中的凭证重新存入数据库,其中电子邮件是纯文本并且密码保存为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值用引号括起来(第二个查询)? –