今回はパスワードをハッシュ化してみたいと思います。

そもそもハッシュ化って何??

ハッシュ化というのは、パスワードを保護するための方法の一つです。
例えば、ユーザー管理のデータベースにそのままパスワードを入れてしまうと、データベースにアクセスされてしまった時点でパスワードなどは全て丸わかりになってします。
ハッシュ化は不可逆的計算が行われているので、ハッシュ値から原文を復元する事は不可能です。
暗号化との違いはこの点にあり、暗号化は一定の手順により復元する事ができるものです。

また、ハッシュ化だけでなくソルト(データを追加する事)を自動生成し、付加すると同じパスワードであっても攻撃される可能性は低くなります。

コード

<?php
$options = array('cost' => 10);
$hash = password_hash($password,PASSWORD_DEFAULT,$options);
//$passwordにパスワードが格納してある場合
?>

解説

ハッシュの生成にはpassword_hash関数を用います。
様々な関数があるようですがセキュリティ観点からこの関数が推奨されているようです。
一行目ではハッシュ処理について計算コストを指定しています。
計算コストというものが増えれば増える程、攻撃に時間が要されるようになります。
ソルトは自動生成されています。

おまけ

aaというパスワードをソルトを付けてハッシュ化しました。
三回行ったのですが毎回違う値を得る事が出来ました。
$2y$10$Qq8lIpjl2U85mwofFDW2Jud.sRpvG6hzaD.BYigKH2Q4O/r0D5/QG
$2y$10$m68sf/WUNqQvtaqSAlfqKu5cRxY4/7BZcAmrSKUS7rhBn8lK.2ZEG
$2y$10$sqveYxum9fGw9tFnnM7Bw.0eWRhKtbDoqP.ef.Xm6YtRLKy6JaUGm


以上

最終更新:2015年11月09日 22:14