ユーザーパスワードにAES暗号化(AES_ENCRYPT)を使用しようとしていますが、さまざまな問題が発生しました。AES_ENCRYPTの使い方は?
INSERT INTO user VALUES (
'15',
'John',
'Doe',
'123 Fake St.',
AES_ENCRYPT('mypassword', 'mysalt'),
'mysalt'
)
塩は、実際のケースでは、ランダムな文字列を次のようになります。
これは、私は、データベースに新しいユーザーを保存するために使用するSQLクエリがあります。
正常に動作します。つまり、元のパスワードを取得できます。この例では、AES_DECRYPT(user.password, 'mysalt') WHERE user.id = 15
はmypassword
を取得します。しかし、私はいくつかのことを見落としているかもしれません。
パスワードと一緒に塩分を保存するのは安全ですか? security through obscurity thingを除きます。
ハッシュされたパスワードを保存するのに最適なフォーマットは何ですか?
VARBINARYを使用していますが、格納されている文字列は8�p�����_�Z�\
のように見えます。最後に、パスワードはどれくらいの期間で、どれくらいの時間が塩であるべきですか? の塩はどうですか?
おかげ
パスワードを暗号化したくない場合、[PBKDF2](http://en.wikipedia.org/wiki/PBKDF2)、[bcrypt](http: /en.wikipedia.org/wiki/Bcrypt)、[scrypt](http://en.wikipedia.org/wiki/Scrypt) - http://security.stackexchange.com/a/6415/27154を参照してください。 –
@ MarkFox私はずっと前にこの質問をしました。最近私は[PHPass](http://www.openwall.com/phpass/)を使用していますが、正しくリコールすればbcryptを使用します。 – federicot