MD5每个密码的字母值得吗?

时间:2011-01-05 14:07:57

标签: java login passwords char md5

问候,

我目前正在开展一个涉及登录系统的项目,该系统旨在尽可能安全地进行设置。

我要问的是,MD5中的每个元素(从密码字段获取)是否值得,通过该方法,您可以向每个要使用MD5进行哈希处理的char元素添加一个salt。 ,添加每个字符的所有哈希值,然后为其添加一个单独的盐,再次添加MD5?

这实际上是安全的,还是只是矫枉过正?

9 个答案:

答案 0 :(得分:16)

根本不安全,因为密钥空间只有255.为每个字母添加一个盐只会在整个字符串中添加相同的盐,并且可能会减少哈希的熵而不是增加它。

正确的解决方案是使用正确的密码散列算法(如bcrypt,scrypt或pbkdf2),避免编写自己的算法。

MD5(以及SHA-1,SHA-2等)非常快,无论如何都很容易破解密码。

修改

今天我们看到了一个很好的例子:iPhone hacker publishes secret Sony PlayStation 3 key

  

然而,索尼编写了自己的签名软件,每个签名使用一个常数。

答案 1 :(得分:2)

可能更好的方法是使用更新的哈希算法,如SHA-1/SHA-2。 MD5中存在已知的漏洞(甚至更现代的SHA-1也有一些漏洞)。

答案 2 :(得分:1)

对我来说听起来不是一个好主意,也不是使用MD5。使用现代SHA算法(如SHA256)。

答案 3 :(得分:1)

MD5存在缺陷:

http://www.kb.cert.org/vuls/id/836068

看来你的提议只会增加O(n + 1)的安全性,其中n是密码长度,这是不够的。

您应该选择另一种哈希算法,例如SHA-256 ou SHA-512,而不是做所有这些混乱。

答案 4 :(得分:0)

那不会真的更安全。

更重要的选择是使用除MD5之外的其他东西来进行这种散列。 MD5对暴力破解非常快(特别是在大规模并行硬件上,例如图形卡),因此容易破解(至少对于单个密码而言)。

如果你使用像SHA-512这样更复杂的东西,你会增加更多的安全性。

答案 5 :(得分:0)

不 - 这根本不会让它更安全。如果您希望它更安全,那么使用更好的散列算法,如SHA1。

答案 6 :(得分:0)

如果你想尽可能安全,你应该使用一些不同的哈希算法,已知md5会有一些碰撞攻击。

查看http://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions

答案 7 :(得分:0)

  

MD5的每个密码都值得吗?

这会使密码LESS安全。要蛮力破解一个完整的密码,你需要尝试每个字母的每个组合(或有一个好的字典)如果你一次加密一个字母,你只需要尝试一次破解一个字母(这是繁琐的)

  

我目前正在开展一个涉及登录系统的项目,该系统旨在尽可能安全地进行设置。

这是一项艰巨的任务。入侵系统的大多数人都有内部知识,比如前雇员。我建议你在确保安全性方面有多长。

法老王的坟墓工人也要埋葬,以确保他们都不会告诉坟墓的位置,然而AFAIK只有一个坟墓被发现完好无损。 ;)

您可以尝试使用Seeded SHA来提高安全性。

答案 8 :(得分:0)

更好的哈希算法和良好的盐将是一个良好的开端。一旦黑客知道你把一个字符放在一个哈希比一个容易解密的小便。 单个字符的彩虹表可以在几秒钟内生成;)。

SHA-512可能是has算法的一个很好的替代方案。并且不要仅从密码生成哈希。也要用盐。这样您就可以非常安全地存储密码。

如果您的密码需要从一个应用程序(客户端)发送到另一个应用程序(服务器),那么使用安全协议进行通信可能更为重要。