我编写了一个使用MD5更新密码的查询。但新密码不起作用,以及旧密码也是如此。以下是查询。
UPDATE tbl_user
SET password = HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))
WHERE login_id = 'user123'
现在,当我输入abc作为密码时,当我登录我的应用程序时它不起作用。
答案 0 :(得分:0)
我不确定,从来没有做过这样的事情,但我认为您需要将密码HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))
的值括在引号中,就像在普通查询中所说的那样
UPDATE tbl_user SET password='complexpassword' WHERE login_id = 'user123'
哦,你可能应该删除login_id周围的括号。如果密码值没有引号,则不会在字符串结尾处并且可能正在尝试插入 “HashBytes('MD5',CAST(CHECKSUM('abc')AS varchar(32)))WHERE(login_id ='user123')”作为您的密码,然后发现它没有位置信息,或者它正在识别您的字符串并将其放在表中,而不是执行哈希。
最简单的方法是在将密码传递给查询语句之前对其进行哈希处理。告诉我,如果这在您的情况下不起作用,并且上述修复不起作用。