はい、他にも多くのハッシュアルゴリズムがあり、よりもはるかに強力ですSHA1
。たとえば、を確認してください。SHA512
たとえば、の128ビットに対して512ビットがありますMD5
。とにかく、あなたが本当の安全を探しているなら、あなたは次のいずれかを適用するべきです:
1)「固定塩」:の代わりにmd5($pass)
、次を使用します。
$salt="NaCl";
$hash=md5($salt);
2)「ランダムソルト」:md5($ pass)'の代わりに、rand($minValue, $maxValue)
範囲が広いランダムソルト(関数を使用)を生成します(たとえばrand(0, pow(10, 100))
、使用しますmd5($pass, $salt)
。ハッシュとソルトの両方を保存することを忘れないでください!
3)暗号化:固定キーまたはランダムキーのいずれかを使用し(前述の方法を参照)、それを使用してパスワードを暗号化します。私は本当にBlowfishアルゴリズムを提案したいと思います。PHP.netのページから:
<?php
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$text = "Meet me at 11 o'clock behind the monument.";
echo strlen($text) . "\n";
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo strlen($crypttext) . "\n";
?>
JavaScriptでのSHA512の実装(ソルト生成なし)(CryptoJSライブラリから):
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/sha512.js"></script>
<script> var hash = CryptoJS.SHA512("Message"); </script>
JavaScriptでのbcryptの実装:この例を参照してください。