web-dev-qa-db-ja.com

MySQLでパスワードをハッシュする方法は?

単一のクエリを使用して、特定の1つの行を除いて、ユーザーテーブルのすべてのパスワードを暗号化(md5())するにはどうすればよいですか?

9
santanu
UPDATE table SET Password = MD5(Password)

MD5はあまり良いレベルの暗号化ではないので、カスタムソルトを使用したENCRYPTなどのより強力なものを検討する必要があります。それについて読む ここ

編集:元の質問が変更されたようです。これに対応するために変更されたクエリは次のとおりです

UPDATE table SET Password = MD5(Password) WHERE ID!=[specified index]

編集:注目に値する

MD5暗号化がハッキングされました

13
jerebear

MySQLのハッシュ関数

MySQLデータベースにパスワードを保存するために使用するハッシュ関数はMD5よりもはるかに多くあります。
それらのリストは MySQL :: 11.10.2。暗号化および圧縮関数 にあります。

パスワードの保存(ハッシュ):

UPDATE users SET password = SHA('secret_password') WHERE ....;

パスワードの確認:

SELECT COUNT(*) FROM users WHERE name = 'username' && password = SHA('typed_password');

結果が> 0の場合、ユーザーは正しいパスワードを入力しました。

4
guerda

編集に関して:この行を識別するIDまたはユーザー名はありますか?

UPDATE mytable
SET password = MD5(password)
WHERE id <> 123
3
unbeknown

パスワードをハッシュするときは、同じパスワードで同じハッシュが生成されないように、パスワードをソルトすることを忘れないでください。

SET @salt := CONV(FLOOR(Rand() * 0x100000000), 10, 16)

UPDATE  passwords
SET     password = CONCAT(@salt, SHA(CONCAT(@salt, @typed_password)))

SELECT  1
FROM    passwords
WHERE   SHA(CONCAT(SUBSTRING(password, 1, 8), @typed_password)) = SUBSTRING(password, 9, 40)
3
Quassnoi

OPでの編集に応じて編集されました。

UPDATE userTable
SET password = MD5(password)
WHERE NOT (<criteria to identify row to exclude>)
3
lc.

もう少しアップデートだと思います

SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('newpass');

または

UPDATE user SET  password = PASSWORD('newpass');

この助けを願っています

2
ackuser