CentOS 7 の php 5.4 で password_hash、password_hash、hash_equals などを使おうとすると、Call to undefined function hash_equals() などと怒られる。どうやら php 5.4 ではこれらの関数が実装されてないようです。よって代わりの案として crypt を使用する方法を紹介します。
<?php
$USER_INPUT = "password";
$hash_pass = crypt($USER_INPUT, '$6$' . uniqid());
print $hash_pass . "\n";
if (crypt($USER_INPUT, $hash_pass) === $hash_pass) {
echo "Password verified!\n";
}
?>
- 何も付けない →
CRYPT_STD_DES
- $1$ →
CRYPT_MD5
- $2a$ →
CRYPT_BLOWFISH
- $5$ →
CRYPT_SHA256
- $6$ →
CRYPT_SHA
512
$6$の後ろは何でも良いのですが uniqid でユニークなIDを生成します。
詳しくはこちら
https://www.php.net/manual/ja/function.crypt.php