我有一個名爲三列的表:Question,Answer,Hashed。我想使用sha512更新哈希列,使用Answer列哈希。使用sha512散列整個列
我試圖從我的MySQL數據庫使用此語法直接做更新,但沒有奏效:
UPDATE表名 SET散列= SHA512(答案) WHERE散列IS NULL
我知道語法是錯誤的,但不知道爲什麼。
在此先感謝您的幫助!
[R
我有一個名爲三列的表:Question,Answer,Hashed。我想使用sha512更新哈希列,使用Answer列哈希。使用sha512散列整個列
我試圖從我的MySQL數據庫使用此語法直接做更新,但沒有奏效:
UPDATE表名 SET散列= SHA512(答案) WHERE散列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$
如果您使用的是Debian,您也可以使用包libstring-mkpasswd-perl
中的mkpasswd
爲您生成SHA-512,並以字符串形式更新。
謝謝G.不幸的是,我收到這個錯誤: 「SHA2不存在」 – user1497265
啊。你使用的是什麼版本的MySQL? SHA2在5.5以後可用 –
就是這樣。我使用5.0。再次感謝!! – user1497265