「色々なハッシュ化アルゴリズムとソルト化」の編集履歴(バックアップ)一覧はこちら

色々なハッシュ化アルゴリズムとソルト化」(2015/10/05 (月) 02:04:26) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

前回記事[[MD5のハッシュ化でソルトを行う。]]の続きで、様々なハッシュ化アルゴリズムについて少し考えていきます。10月4日記事。 ~ ~ 目次 #contents ~ ~ ---- ~ *MD5以外のハッシュ化アルゴリズムについて考える。 md5は有名ですが、それ以外のものも色々と登場してきているので、紹介。 ~ ~ *コード 適当なパスワードを入れるコード <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>パスワード挿入</title> </head> <body> <form action="confirm.php" method="post"> <label for="password">パスワード</label> <input type="text" name="str"> <input type="submit" name="submit" value="送信"> </form> </body> </html> ハッシュ化したものと文字数を取得するコード <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>色々なハッシュ化</title> </head> <body> <?php $str = $_POST["str"]; echo "md5<br>"; echo md5($str)."<br>で".strlen(md5($str))."文字<br>"; echo "sha1<br>"; echo sha1($str)."<br>で".strlen(sha1($str))."文字<br>"; //echo "sha256<br>"; //以下のように書いたらエラーになります。 //echo sha256($str)."<br><br>"; echo "<br>"; echo "hash関数を用いた表記:<br>"; echo "md5<br>"; echo hash("md5",$str)."<br>で".strlen(hash("md5",$str))."文字<br>"; echo "sha1<br>"; echo hash("sha1",$str)."<br>で".strlen(hash("sha1",$str))."文字<br>"; echo "sha256<br>"; echo hash("sha256",$str)."<br>で".strlen(hash("sha256",$str))."文字<br>"; echo "sha512<br>"; echo hash("sha512",$str)."<br>で".strlen(hash("sha512",$str))."文字<br>"; echo "haval160,4<br>"; echo hash("haval160,4",$str)."<br>で".strlen(hash("haval160,4",$str))."文字<br>"; //もっと色々とハッシュアルゴリズムはあります。 //http://php.net/manual/ja/function.hash.phpを見てみてください。 //ソルト化 $passsalt = 'nanikanomojiretu'; echo "<br><br>"; echo "ソルト化。パスワードの文字列にランダムな文字列を付け加えてハッシュ化<br>"; echo "md5ソルト。<br>"; echo hash("md5",$str.$passsalt)."<br>で".strlen(hash("md5",$str.$passsalt))."文字<br>"; echo "sha512ソルト。破られてないけど、破られた時のために。。<br>"; echo hash("sha512",$str.$passsalt)."<br>で".strlen(hash("sha512",$str.$passsalt))."文字<br>"; ?> </body> </html> ~ ~ *実行結果 仮にpasswordというpasswordを入力してみます。 md5 5f4dcc3b5aa765d61d8327deb882cf99 で32文字 sha1 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 で40文字 hash関数を用いた表記: md5 5f4dcc3b5aa765d61d8327deb882cf99 で32文字 sha1 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 で40文字 sha256 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 で64文字 sha512 b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86 で128文字 haval160,4 757921aaa14a05363dd9bea6a5cafa622333d191 で40文字 ソルト化。パスワードの文字列にランダムな文字列を付け加えてハッシュ化 md5ソルト。 47b7f635d05d47cc13d148da4c1db729 で32文字 sha512ソルト。破られてないけど、破られた時のために。。 4fa3e45dacf1ce7b71db20ab2a1a7185e25dbc58e912e5773285b933e594910d3573698c69d477a45ea7e0d927e38707a677e2aac9fb33881c69d2f2507e62c2 で128文字 ~ ~ *まとめ 色々とありすぎて、どれを採用しようか迷うところではありますが、md5の5f4dcc3b5aa765d61d8327deb882cf99は超有名です。passowrdというpasswordにしないようにしましょう。ソルト化したとしても、やはり辞書攻撃の対象にもはいっていますので危険です。 ~ PHPマニュアルはhttp://php.net/manual/ja/function.hash.phpです。 ~ ~ 以上

表示オプション

横に並べて表示:
変化行の前後のみ表示: