6

Question、Answer、Hashedという名前の3つの列を持つテーブルがあります。sha512 を使用してハッシュされた Answer 列で Hashed 列を更新したいと考えています。

この構文を使用して MySql データベースから直接更新を試みましたが、うまくいきませんでした:

UPDATE TableName SET Hashed = SHA512(回答) WHERE Hashed IS NULL

構文が間違っていることはわかっていますが、その理由はわかりません。

よろしくお願いします。

R

4

2 に答える 2

13

これを試してみてください。

UPDATE TableName SET Hashed=SHA2(Answer, 512) WHERE Hashed IS NULL;

これはMySQL5.5以降でのみ機能することに注意してください。5.5より前のバージョンでは、アプリケーションコードを使用してハッシュする必要があります(PHPですべての行を取得し、$ row ['answer']をSHA512に繰り返しハッシュしてから、それぞれでUPDATEコマンドを実行します)(出典:http ://dev.mysql.com/doc/refman/5.5/en//encryption-functions.html#function_sha2

于 2012-09-27T00:14:58.540 に答える
1

手遅れにならないことを願っています。たとえ、他の誰かがこのヒントを見つけたとしても:

UPDATE TableName SET Hashed = ENCRYPT('Answer', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))) WHERE Hashed IS NULL;

それが何をするか、それはそのスキーマで sha-512 ハッシュを作成します:$6$文字列 'Answer' から

debian を使用している場合は、mkpasswdfrom packageを使用しlibstring-mkpasswd-perlて SHA-512 を生成し、文字列として更新することもできます。

于 2016-08-24T11:16:14.877 に答える