PHPの基礎 - ハッシュ
概要
パスワード
パスワードのハッシュ化
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 {
// パスワードが一致しない場合の処理
}