Laravel5のパスワード暗号化とログイン

Laravel5のパスワードの暗号化は、

vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php

ここらでやっております。

$hash = password_hash($value, PASSWORD_BCRYPT, [
    'cost' => $this->cost($options),
]);

コストをオプションとして設定している感じです。普通です。
昨今のセキュリティー云々のあれでpassword_hash()関数自体がかなり複雑なことになっているので私は解析を諦めました。かつては保存してあるパスワードと入力されたハッシュを比較すれば済むというようなこともなくなり照合自体もpassword_verify()関数をつかって行います。

if (password_verify($password, $password_hash)) {
    echo 'OK' . PHP_EOL;
} else {
    echo 'NG' . PHP_EOL;
}

しかしpassword_hash()でもbcrypt()でもpassword_verify()の照合でtrueになるのはなんでだ?


https://dev.classmethod.jp/security/rainbowtable/
https://saratoga.jp/tips/586

Last update: 2018.04.27 (金)