我有一个包含三列的表:Question,Answer,Hashed。我想使用sha512更新Hashed列并使用Answer列进行哈希处理。
我尝试使用这种语法直接从我的MySql数据库进行更新,但它不起作用:
更新TableName SET Hashed = SHA512(答案) WHERE Hashed IS NULL
我知道语法错误但不确定原因。
提前感谢您的帮助!
[R
答案 0 :(得分:10)
给这一点。
UPDATE TableName SET Hashed=SHA2(Answer, 512) WHERE Hashed IS NULL;
请注意,这仅适用于MySQL 5.5。对于5.5之前的版本,你必须使用应用程序代码来散列它(PHP获取所有行,迭代并散列$ row ['answer']到SHA512,然后在每个上运行UPDATE命令) (来源:http://dev.mysql.com/doc/refman/5.5/en//encryption-functions.html#function_sha2)
答案 1 :(得分:0)
我希望现在还为时不晚。即使,也许其他人会发现这个暗示:
UPDATE TableName SET Hashed = ENCRYPT('Answer', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))) WHERE Hashed IS NULL;
它做什么,它创建sha-512哈希,使用它的模式:$6$
来自字符串'Answer'
如果您使用的是debian,您也可以使用包mkpasswd
中的libstring-mkpasswd-perl
为您生成SHA-512,并以字符串形式更新。