0

sha1(sha1($password . $salt)) $ saltがランダムに生成された文字列になるように、ユーザーごとに一意のソルトを生成し、それをハッシュすることが可能かどうかを尋ねたいと思い ます。

はいの場合、ログイン時にパスワードを暗号化するにはどうすればよいですか?

Xenforoはこれを使用していますが、ユーザーごとに一意のソルトを使用している場合、パスワードをどのように暗号化するのでしょうか。

どうもありがとう。

4

1 に答える 1

6

独自のパスワードハッシュアルゴリズムを作成しないでください。簡単に解読できるようになり、データベースが危険にさらされたときにユーザーがパスワードを盗まれたことに気付くことはありません。

Bcryptやその他の十分にテストされたハッシュはすでにこれを行っています:

>>> bcrypt.generate_password_hash('password', 15)
    '$2a$15$bzaLXuer1C8dtSckDp3AI.eOoL/nOTsSdpjEMyDMcJ3ZQELdRcLzq'
>>> bcrypt.generate_password_hash('password', 15)
    '$2a$15$Ye.cFInKhzo1KvAJGSi6yORV5uEqeW.Z1oAhdfi.163Psz4YPA3CO'

ランダムソルトとラウンド数は、区切り文字で区切られたハッシュ自体に格納されます。これにより、一定時間のパスワードチェック機能で、結果のハッシュ文字列からソルトを選択できます。

他の理由で安全なランダム文字列を作成する必要がある場合は、次を使用しopenssl_random_pseudo_bytes()ます。

$bytes = openssl_random_pseudo_bytes(64, true);
$hex = bin2hex($bytes);
于 2013-03-25T00:42:04.753 に答える