2016-07-12 1 views
1

私は古いハッシュ方式を使用するMySQLデータベースを持っています。 は、今私はAESOLDハッシュパスワードをAESに変換するクエート

SELECT HEX(AES_ENCRYPT('%s', 'key')); 

スヨンと、この新しいハッシュ方式を使用したい、誰かがこのハッシュ

SELECT PASSWORD('TEST'); 

イントロ新しいものとmadedすべてのパスワードを変換するためのクエリで私を助けることができますか?

暗号化されたパスワードから新しいパスワードに直接変更することはできないと思います。 最初に解読してから(古いものから)クエリを暗号化します。

ありがとうございます。

+5

**パスワードを暗号化しないでください**、攻撃者がDBを取得したときにも暗号化キーを取得します。約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。 password_hash、PBKDF2、Bcryptなどの関数を使用します。要点は、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。 – zaph

+0

いいえ、いいえ。彼は鍵を見つけることができないから。キーはC++プログラムに保存されます。キーは、mysqlデータベース、またはイントロPHP関数に格納されていません。それらのキーは、イントロでコンパイルされたアプリケーションです。 – marc

+1

@marc何も変わりません。彼らがそのアプリケーションを取得した場合、彼らはキーを取得します。パスワードをハッシングする以外に何も使用する必要はありません。 –

答えて

2

Encryption and hashing are very different operationsです。暗号化は元に戻すことができます。ハッシングは一方向です。

さらに、correct way to store passwordsは、AESだけでなく、SHA1(MySQLがPASSWORD()関数で使用する)などの高速ハッシュ関数を伴わず、bcryptのような低速ハッシング関数を伴います。

password_hash()およびpassword_verify()を使用してください。 SQLクエリでそれをしないでください。レガシーハッシュを適切なパスワード格納アルゴリズムに移行する方法については、this sectionを参照してください。

関連する問題