我写了一个查询来使用 MD5 更新密码。但新密码无效,旧密码也无效。下面是查询。
UPDATE tbl_user
SET password = HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))
WHERE login_id = 'user123'
现在,当我将 abc 作为密码时,它不起作用,当我登录到我的应用程序时。
我写了一个查询来使用 MD5 更新密码。但新密码无效,旧密码也无效。下面是查询。
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)))
在引号中,就像在正常查询中你会说的那样
UPDATE tbl_user SET password='complexpassword' WHERE login_id = 'user123'
哦,您可能应该删除 login_id 周围的括号。由于密码值没有引号,它不知道字符串的结尾在哪里,并且可能正在尝试插入 "HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))WHERE (login_id = 'user123')" 作为您的密码,然后发现它没有位置信息,或者它正在识别您的字符串并将其按原样放置在表中,而不是执行哈希。
最简单的方法是在将密码传递给查询语句之前对其进行哈希处理。告诉我这是否在您的情况下不起作用,以及上述修复是否不起作用。