我有一个包含三列的表:问题、答案、散列。我想用使用 sha512 散列的 Answer 列更新 Hashed 列。
我尝试使用这种语法直接从我的 MySql 数据库中进行更新,但没有成功:
UPDATE TableName SET Hashed = SHA512(Answer) WHERE Hashed IS NULL
我知道语法错误,但不知道为什么。
在此先感谢您的帮助!
R
试一试。
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 )
我希望这还不算太晚。即使,也许其他人会发现这个提示:
UPDATE TableName SET Hashed = ENCRYPT('Answer', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))) WHERE Hashed IS NULL;
它的作用是使用它的模式创建 sha-512 哈希:$6$
来自字符串 'Answer'
如果您使用的是 debian,您也可以使用mkpasswd
from packagelibstring-mkpasswd-perl
为您生成 SHA-512,并更新为字符串。