PHPの基礎 - ハッシュ

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要



パスワード

パスワードのハッシュ化

PHPには、パスワードのハッシュ化に特化したpassword_hash関数を使用することが推奨される。

password_hash関数は、使用しているPHPのバージョンでデフォルトで使用されているアルゴリズムを自動的に選択して、
ソルト(ランダムな値)を自動的に生成することにより、安全なハッシュを生成する。
デフォルトでは、PHPのバージョンに応じて、BCRYPTまたはARGON2アルゴリズムが使用される。

以下の例では、password_hash関数を使用してパスワードをハッシュ化している。

 $password = "your_password";
 $hashed_password = password_hash($password, PASSWORD_DEFAULT);


password_hash関数の第1引数にハッシュ化したいパスワード、第2引数にアルゴリズムを指定する。
PASSWORD_DEFAULTは、現在のPHPのバージョンでデフォルトで使用されているアルゴリズムを指す。

ただし、特定の理由でSHA-512アルゴリズム等を使用する必要がある場合は、hash関数を使用することができる。
以下の例では、hash関数を使用して、SHA-512アルゴリズムでハッシュ化している。

 $password = "your_password";
 $hashed_password = hash("sha512", $password);


hash関数の第1引数にアルゴリズムとして"sha512"を指定して、第2引数にハッシュ化したいパスワードを渡す。
hash関数は、指定されたアルゴリズムを使用してパスワードをハッシュ化して、ハッシュ値を返す。

ただし、SHA-512アルゴリズムは、現在のセキュリティ基準では十分でない可能性があることに注意する。
セキュリティの観点から、password_hash関数を使用してパスワードをハッシュ化することを推奨する。

パスワードの照合

ハッシュ化されたパスワードの照合は、password_verify関数を使用する。
password_verify関数は、入力したパスワードとハッシュ化されたパスワードを比較して、一致する場合はtrue、一致しない場合はfalseを返す。

 if (password_verify($password, $hashed_password)) {
    // パスワードが一致する場合の処理
 }
 else {
    // パスワードが一致しない場合の処理
 }