-1

我写了一个查询来使用 MD5 更新密码。但新密码无效,旧密码也无效。下面是查询。

UPDATE tbl_user
SET password = HashBytes('MD5', CAST(CHECKSUM('abc') AS varchar(32)))
WHERE login_id = 'user123'

现在,当我将 abc 作为密码时,它不起作用,当我登录到我的应用程序时。

4

1 回答 1

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')" 作为您的密码,然后发现它没有位置信息,或者它正在识别您的字符串并将其按原样放置在表中,而不是执行哈希。

最简单的方法是在将密码传递给查询语句之前对其进行哈希处理。告诉我这是否在您的情况下不起作用,以及上述修复是否不起作用。

于 2012-04-19T12:59:54.267 回答