我正在尝试对存储在数据库中的凭据执行登录检查,其中电子邮件是纯文本,密码保存为 SHA1。目前,用户是手动创建的。为了检查登录详细信息,我决定使用存储过程。这是问题所在:
以下查询在 SHA1 中返回密码:
SELECT HASHBYTES('SHA1', 'password')
// returns 0x5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8
以下查询确认用户存在:
SELECT COUNT(*) from users where email='test@gmail.com'
and password='0x5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8' // returns 1
现在出现了存储过程(从整个过程中提取的 select 语句,其中 'password' 是一个占位符),它似乎没有返回 1,因为它应该:
SELECT COUNT(*) from users where email='test@gmail.com'
and password=(SELECT HASHBYTES('SHA1', 'password')) // returns 0
有谁知道为什么?