2012-09-27 3 views
4

Question, Answer, Hashed라는 세 개의 열이있는 테이블이 있습니다. sha512를 사용하여 해시 열을 해시 열로 업데이트하고 싶습니다.sha512를 사용하여 전체 열 해싱

나는이 구문을 사용하여 내 MySQL 데이터베이스에서 직접 업데이트를하려고 노력했지만, 그것은 작동하지 않았다

UPDATE TABLENAME SET 해시 된 = SHA512 해시가 null (대답)

구문이 잘못되었지만 확실하지 않은 이유를 알고 있습니다.

미리 도움 주셔서 감사합니다.

답변

10

사진을주세요.

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

이 기능은 MySQL 5.5 이상에서만 작동합니다. 5.5 이전 버전의 경우, 애플리케이션 코드를 사용하여 해시를해야합니다 (PHP는 모든 행을 가져오고 SHA512로 $ row [ 'answer']를 반복 실행 한 다음 각각에 대해 UPDATE 명령을 실행해야합니다) (출처 : http://dev.mysql.com/doc/refman/5.5/en//encryption-functions.html#function_sha2)

+0

감사합니다. G. 불행히도이 오류가 발생했습니다. "SHA2가 없습니다" – user1497265

+0

Ah. 어떤 버전의 MySQL을 사용하고 있습니까? SHA2는 5.5 이후에 사용 가능합니다. –

+0

그렇습니다. 나는 5.0을 사용하고있다. 다시 한 번 감사드립니다! – user1497265

0

너무 늦지 않았 으면 좋겠습니다. 이 스키마의로는, SHA-512 해시를 생성, 그것은 무엇을

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

:하더라도, 다른 어쩌면 누군가가이 힌트를 찾을 문자열 '대답'

에서 $6$을 여러분이 데비안을 사용하는 경우, libstring-mkpasswd-perlmkpasswd을 사용하여 SHA-512를 생성하고 문자열로 업데이트 할 수 있습니다.