我有一个包含三列的表:问题、答案、哈希。我想用使用sha512散列的Answer列来更新散列。
我尝试使用以下语法直接从我的MySql数据库进行更新,但不起作用:
UPDATE TableName SET Hashed =SHA512(答案) WHERE Hashed为NULL
我知道语法是错误的,但不确定为什么。
提前感谢您的帮助!
R
发布于 2012-09-27 08:14:59
试试看。
UPDATE TableName SET Hashed=SHA2(Answer, 512) WHERE Hashed IS NULL;请注意,这仅适用于MySQL 5.5及更高版本。对于5.5之前的版本,您必须使用应用程序代码对其进行散列(PHP以获取所有行,迭代并将$row‘SHA512’散列到答案,然后对每个行运行更新命令)(来源:http://dev.mysql.com/doc/refman/5.5/en//encryption-functions.html#function_sha2)
发布于 2016-08-24 19:16:15
我希望这还不算太晚。即使,也许其他人会发现这个提示:
UPDATE TableName SET Hashed = ENCRYPT('Answer', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))) WHERE Hashed IS NULL;它的作用是创建sha-512散列,使用它的schema:$6$字符串'Answer‘
如果您正在使用debian,您也可以使用libstring-mkpasswd-perl包中的mkpasswd为您生成SHA-512,并将其更新为字符串。
https://stackoverflow.com/questions/12612279
复制相似问题