PHPで文字列を暗号化する方法を紹介します。

まずは「ハッシュ値」について説明します。

ハッシュ値とは元の文字が推測できないように変換された文字列のことです。

PHPの代表的な

PHPではいくつかのハッシュ関数が用意されています。代表的なものは以下の4つ。

関数名説明
md5MD5方式で、16進数で32文字のハッシュ値を生成する
sha1SHA-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関数を使うようにしましょう。