PHPで文字列を暗号化する方法を紹介します。
まずは「ハッシュ値」について説明します。
ハッシュ値とは元の文字が推測できないように変換された文字列のことです。
PHPの代表的な
PHPではいくつかのハッシュ関数が用意されています。代表的なものは以下の4つ。
関数名 | 説明 |
---|---|
md5 | MD5方式で、16進数で32文字のハッシュ値を生成する |
sha1 | SHA-1方式で、16進数で40文字のハッシュ値を生成する |
hash | 指定したアルゴリズムでハッシュ値を生成する |
password_hash | パスワードなど機密性の高い文字列のハッシュ値を生成する |
- md5は「Message Digest Algorithm 5」の略。
- password_hashは自動で「ソルト」を付与したり、計算コストの調整機能も追加されています。パスワードの暗号化に使うことが多いでしょう。
ハッシュ関数の使い方
上で挙げた4つの関数は、基本的には引数で暗号化したい文字列を指定するだけ。簡単に使うことができます。
一例を挙げると次のとおり。
「md5」関数の使い方
<?php $text = "Hello World."; echo md5( $text ); ?>
上記コードを実行するとd7527e2509d7b3035d23dd6701f5d8d0
が出力されます。
なお第2引数で「true」を指定すると16バイトのバイナリ形式で取得できます。
<?php $text = "Hello World."; echo md5( $text , true); ?>
「sha1」関数の使い方
<?php $text = "Hello World."; echo sha1( $text ); ?>
上記コードを実行するとb701146cf2c1262a6385c8b1fb1db98f05820499
が出力されます。
「hash」関数の使い方
<?php $text = "Hello World."; echo hash("sha256", $text); ?>
上記コードを実行するとf4bb1975bf1f81f76ce824f7536c1e101a8060a632a52289d530a6f600d52c92
が出力されます。
「password_hash」関数の使い方
<?php $text = "Hello World."; echo password_hash($text ,PASSWORD_DEFAULT); ?>
上記コードを実行すると$2y$10$kzSd/JSxG1YDMCjlZFyd7uUPG8ETtzKpdmr2LuAcFTrAXQJwYIIwa
が出力されます。
最後に
PHPで文字列をハッシュ値に変換して暗号化する方法を紹介しました。
パスワードなどの機密性の高い文字列はpassword_hash関数を使うようにしましょう。