3

PHP 5.5 の新機能について読んだところですが、新しいパスワード ハッシュ機能 ( http://www.php.net/manual/en/function.password-hash.php ) が含まれています。説明を見ると、デフォルトの操作は、パスワードソルトを指定しない場合、ランダムに生成することです。

しかし、それがどのように役立つかわかりません。安全な保管のためにパスワードをハッシュしている場合、ソルトはランダムであるためです。次に、ユーザーがパスワードに入力する文字列を実行すると、ソルトが毎回異なる場合、結果のハッシュは毎回異なります。したがって、入力された有効なパスワードと保存されているパスワード ハッシュのコピーを正常に比較することはできません。

では、これがどのように役立つのでしょうか。

4

1 に答える 1

8

ソルトはハッシュ値に含まれます。

<?php

$hash = password_hash("password", PASSWORD_DEFAULT, ['salt' => 'saltsaltsaltsaltsaltsa']);
print_r(password_get_info($hash));
echo $hash;

出力:

Array
(
    [algo] => 1
    [algoName] => bcrypt
    [options] => Array
        (
            [cost] => 10
        )

)

$2y$10$saltsaltsaltsaltsaltsOPRDjePxJkNp7mjBEve63IqKPFT7ehNG

ご覧のとおり、ハッシュ関数はハッシュ プロセスに関する情報をハッシュ自体に格納します。関数は、この情報に基づいてパスワードをpassword_verify()解析し、検証します。hash

于 2013-10-10T14:51:20.713 に答える