是的,还有很多其他的散列算法,比SHA1
. 检查SHA512
,例如:它有 512 位,例如 128 位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:见这个例子。