我可以md5(sha1(密码))?

时间:2012-02-04 18:06:31

标签: php md5 sha1

我正在编写自己的CMS编码,而且我处于密码状态......

我想知道我是否可以md5密码,然后sha1密码呢?

像:

$password = md5(sha1(mysql_real_escape_string($_POST['passw'])));

5 个答案:

答案 0 :(得分:6)

您可以md5您想要的任何数据,即使之前已经过哈希。

但是,它只会增加碰撞的风险,因为您现在正在处理较小的数据集。

你想要达到什么目标?

答案 1 :(得分:4)

是的,你可以。 不,它没有意义。

链式哈希函数的安全性总是等于或小于最弱算法的安全性。

即。 md5(sha1($ something))并不比sha1($ something)更安全:如果你设法打破sha1,你可以免费获得md5,因为shat($ something)和sha1($ faked_something)具有相同的价值,因此md5ing他们不会改变任何东西。

答案 2 :(得分:2)

确保在那里添加盐,这使得彩虹表更难以用于客户/用户的密码。

类似的东西:

$ hashedPassword = sha1(md5($ password)。$ salt.sha1($ salt。$ password));

盐本身可以是一个很好的长随机字符串,在您的应用程序中可以是常量,也可以是与用户一起存储的每个联系人的盐。

答案 3 :(得分:1)

你显然可以。我不明白为什么你不能。

如果您想要更好的安全性,则应考虑phpass之类的内容。

答案 4 :(得分:1)

你可以做到这一点,但它并没有真正的好处。如果您通过md5()运行密码,则可以通过添加加密盐获得更高的安全性。

What is SALT and how do I use it?有更多信息。

您可能听到的其他一些建议是不使用MD5SHA1比较强大,您只需要在数据库中更改密码字段即可接受40个字符的字符串。