+ -
当前位置:首页 → 问答吧 → 让你的md5密码更安全

让你的md5密码更安全

时间:2008-09-10

来源:互联网

看到标题 ,就会有人反问, 难道md5不安全吗? 并非如此,至少在目前来说, md5还是安全保存密码的方式 .

一般的程序都是在用户注册时将明文的密码加密,然后存入数据库的.

但是网上有很多md5暴力破解的工具, 这又是为什么? 其实,这并不是md5不安全, 而是网上的破解工具用一个非常庞大的数据库保存了明文与其md5加密后的结果, 对那些密码很简单的字符串, 即可轻易从md5串反查数据库, 得到原始密码. 就是这个原理.

那么, 如果你的数据库不小心被暴露, 则恶意分子极可能用上面的方式用md5字符串破解出原始的密码. 从而造成安全漏洞 .

好,这节的知识就是避免这个问题.

1. 注册时:将原始明文密码多次加密,然后存入数据库,如何 ?效果很不错吧?如 $password = md5(md5($password));
2. 用户名和密码混合再md5加密一次如何? $password = md5(md5($password).$username);  效果似乎更不错
2.用固定加密KEY, 来二次加密,如何 ?
$KEY = 'fjasdklfjfmslakfmdklsajfl72389749823';
$password  = md5($password.$KEY);
效果似乎更好了.

为什么要使用这些方式 ?更安全,用上面的任一方法生成md5串, 被暴力破解的可能性基本上是0,绝对不用担心被暴库造成密码被破解.

要知道的一点就是: ucenter ,discuz, phpcms, ecshop 几乎无一例外地使用了上述之一的方式.

考虑一下,改变思路, 将见证一个更美好的世界出现 .
原文已经发布在我的blog上:
http://www.zhixinku.com/home/space.php?uid=4&do=blog&id=18

作者: xuer   发布时间: 2008-09-10

顶一下,joomla使用了第三种方式来整的
[code]function getHash($seed)
{
$conf = & JFactory::getConfig();
return md5( $conf->getValue('secret') . $seed );
}//其中secret变量是写在confugration.php文件中的[/code]
当时看还不知道为啥要这样整,现在明白了

作者: clearchen   发布时间: 2008-09-10