PHP 値のハッシュ化を行う


目的

  • PHPにて任意の値のハッシュ化を行う方法をまとめる

実施環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.3)
ハードウェア MacBook Pro (16-inch ,2019)
プロセッサ 2.6 GHz 6コアIntel Core i7
メモリ 16 GB 2667 MHz DDR4
グラフィックス AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.3 Homwbrewを用いて導入
Laravel バージョン 7.0.8 commposerを用いて導入
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いて導入
  • 上記環境にてLaravelアプリを作成し、そのアプリ名ディレクトリでコマンド$ php artisan tinkerを実行し動作を確認した。

ハッシュ化のアルゴリズム

アルゴリズム名 情報 オプション(※の後は備考)
PASSWORD_BCRYPT CRYPT_BLOWFISH アルゴリズムでパスワードハッシュを作成 salt (文字列) パスワードのハッシュに使うソルトを手動で設定する。
cost (コスト数) 利用するアルゴリズムのコストを表す。コスト数は数値で指定する。
PASSWORD_ARGON2I Argon2i アルゴリズムでパスワードハッシュを作成 memory_cost (メモリバイト数) ハッシュ計算に用いるメモリ最大値 (バイト数)を指定する
time_cost (数値) ハッシュ計算にかける時間の最大値を設定する。
threads (数値) ハッシュ計算に用いるスレッド数を設定する。
※PHP 7.2.0以降で使用可能
PASSWORD_ARGON2ID Argon2id アルゴリズムでパスワードハッシュを作成 PASSWORD_ARGON2_DEFAULT_MEMORY_COST (数値) ハッシュ計算に用いるメモリのデフォルト値を設定する。
PASSWORD_ARGON2_DEFAULT_TIME_COST (数値) ハッシュ計算にかける時間のデフォルト値を設定する。
PASSWORD_ARGON2_DEFAULT_THREADS (数値) ハッシュ計算にかけるスレットのデフォルト値を設定する。
※PHP 7.2.0以降で使用可能
PASSWORD_DEFAULT 当該PHPのバージョンにて最も強力なハッシュアルゴリズムを使用してパスワードハッシュを作成する ※PHPのバージョンアップにてハッシュアルゴリズムが変更になる可能性がある。
ハッシュの長さが変わる可能性がある為、ハッシュの格納先は255文字程度まで格納可能に設定しておくと良い

記載例

  • 下記にハッシュ化を行う際の記載例を書く。

    password_hash(ハッシュ化したい文字列, ハッシュ化する再に用いるアルゴリズム, アルゴリズムのオプション);
    
  • 文字列「test」という文字列をハッシュ化したい時は下記のように記載する。

    password_hash('test', ハッシュ化する再に用いるアルゴリズム);
    
  • 変数「$str」に格納されている値をハッシュ化したい時は下記のように記載する。

    password_hash($str, ハッシュ化する再に用いるアルゴリズム);
    

具体例

  1. 文字列「test」をアルゴリズム「PASSWORD_BCRYPT」でハッシュ化するときは下記のように記載する。

    password_hash('test', PASSWORD_BCRYPT);
    
  2. 変数「$str」に格納された文字列をアルゴリズム「PASSWORD_ARGON2I」でハッシュ化するときは下記のように記載する。

    password_hash($str, PASSWORD_ARGON2I);
    
  3. 変数「$str」に格納された文字列をアルゴリズム「PASSWORD_DEFAULT」でハッシュ化するときは下記のように記載する。

    password_hash($str, PASSWORD_DEFAULT);