什么是增强MD5哈希安全性的有效方法?

时间:2011-02-13 01:04:27

标签: security cryptography md5 hash

我的意思是即使用户选择了一个相对简单的密码,实际上很难利用它?除了使用其他加密函数之外,我想不出任何其他东西。

6 个答案:

答案 0 :(得分:8)

您可以做一些事情:

使用所有这些技术以获得最佳安全性。

在性能方面,最后一点并不是特别有效,但这是故意的。最常用的加密哈希函数的问题在于它们被设计为 fast 来计算,这意味着如果密码是字典单词,它们也快速破解。密钥强化的想法是使算法计算速度慢,即使是弱密码也需要很长时间才能破解。

答案 1 :(得分:3)

不要认为,阅读;)(并询问SO)你会想要用自己的盐加盐密码,这样相同的密码就不会产生相同的哈希值

http://en.wikipedia.org/wiki/Salt_(cryptography

答案 2 :(得分:3)

您可能希望将盐http://en.wikipedia.org/wiki/Salt_(cryptography)添加到您要哈希的密码中。无论如何,请注意,散列密码总会存在一些风险,请看一下这篇文章http://www.f-secure.com/weblog/archives/00002095.html

答案 3 :(得分:0)

将加密安全性和分析保留给专家,并使用更好的加密功能。

答案 4 :(得分:0)

不使用MD5进行散列密码。关于针对吞吐量优化的任何散列函数也是如此。 SHA1和MD5的概念是,您可以生成几乎无限量数据的紧凑表示,以便您可以检查其完整性并以加密方式对其进行签名。

散列密码的想法是,您无法从散列中检索密码。然而,大多数密码都比它们的哈希短,并且实施暴力或字典攻击是微不足道的。因此,给定哈希,使用的哈希函数可以在本地实现检查逻辑 - 可能在大型并行计算机上,想想GPU - 并且合理地快速破解密码。

你真正想要做的是使用哈希函数,这种函数计算量很大,以至于哈希需要花费很多时间,即使尝试对4字符密码进行暴力攻击也需要数小时。

答案 5 :(得分:-1)

只需在用户输入的密码中添加一些盐即可。

$salt = 'random string';
md5(sha1(md5($salt . $_POST['password'])));

几乎不可能破解结果。