目的
- 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
を実行し動作を確認した。- Laravelの環境構築を行いたい方はこちら→Mac Laravelの環境構築を行う
ハッシュ化のアルゴリズム
- 下記を参考に簡単に表にまとめる。
| アルゴリズム名 | 情報 | オプション(※の後は備考) |
| --- | --- | --- | --- |
| 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, ハッシュ化する再に用いるアルゴリズム);
具体例
- 下記のブラウザサービスで具体例のコードをお試し実行することができる。
-
文字列「test」をアルゴリズム「PASSWORD_BCRYPT」でハッシュ化するときは下記のように記載する。
password_hash('test', PASSWORD_BCRYPT);
-
変数「$str」に格納された文字列をアルゴリズム「PASSWORD_ARGON2I」でハッシュ化するときは下記のように記載する。
password_hash($str, PASSWORD_ARGON2I);
-
変数「$str」に格納された文字列をアルゴリズム「PASSWORD_DEFAULT」でハッシュ化するときは下記のように記載する。
password_hash($str, PASSWORD_DEFAULT);