md5関数でパスワードなどを暗号化する

2012-08-16 17:43:57
md5関数に文字列を与えると、その文字に準じた32文字の英数字の文字列(ハッシュ値)を返してくれます。一文字でも違う値を与えれば、全く違う文字列になり、同じ文字列なら毎回同じ文字列が返ります。

<関数の使用例>


<?php
echo md5('abcd');
?>

<結果>


e2fc714c4727ee9395f324cd2e7f331f

上記の文字列から元の文字列に戻す方法はありません。一度暗号化してしまうと、暗号化した本人しか答えが分からないのです。セキュリティーを重視するサイトではデータデースにそのままパスワードを記録させてはいけません。パスワードは必ずmd5で暗号化しておきましょう。もし、情報が漏れた際でも最悪のケースは防げます。

主な使い方はログイン時のパスワード認証になりますが、メンバー登録の際に仮登録から本登録をさせる際に送るURLのパラメーターにメールアドレスのハッシュ値をつけ、本人確認に用いることもあります。

<パスワード認証>


<?php
$pass = "c4ca4238a0b923820dcc509a6f75849b";
if (md5($_POST["pass"]) == $pass) {
    echo "認証成功";
}
?>

もう一つ使える技があります。例えば掲示板などで長い文章を扱う場合、文章のハッシュ値を随時取得し、データベースに格納しておきます。そうすると、まったく同じ内容の書き込み(マルチポスト)をさせない為の防止を高速に行うことができます。

どんな長い文字列でも32文字の英数字で返してくれるmd5関数は暗号化や重複チェックの場面で活躍する重要な関数です。
カテゴリ: PHP