【发布时间】:2011-06-26 06:57:15
【问题描述】:
我的意思是即使用户选择了一个相对简单的密码,实际上也很难被利用?除了使用额外的加密功能之外,我想不出任何办法。
【问题讨论】:
-
使用不同的算法。为什么你不得不坚持使用 MD5?
标签: security cryptography md5 hash
我的意思是即使用户选择了一个相对简单的密码,实际上也很难被利用?除了使用额外的加密功能之外,我想不出任何办法。
【问题讨论】:
标签: security cryptography md5 hash
你可以做一些事情:
使用所有这些技术以获得最佳安全性。
最后一个在性能方面并不是特别有效,但这是故意的。最常用的加密散列函数的问题在于,它们的计算速度快速,这意味着如果密码是字典单词,它们也可以快速破解。密钥强化的想法是让算法的计算速度如此之慢,以至于即使是弱密码也需要很长时间才能破解。
【讨论】:
不要思考,阅读 ;)(然后问 SO)你会想用他们自己的盐来加盐密码,这样相同的密码就不会产生相同的哈希
【讨论】:
您可能希望在要散列的密码中添加盐 http://en.wikipedia.org/wiki/Salt_(cryptography)。无论如何,请注意,哈希密码总是存在一些风险,请查看这篇文章http://www.f-secure.com/weblog/archives/00002095.html
【讨论】:
将加密安全及其分析留给专家,然后使用更好的加密功能。
【讨论】:
不使用 MD5 对密码进行哈希处理。任何针对吞吐量优化的哈希函数也是如此。 SHA1 和 MD5 的理念是,您可以生成几乎无限量数据的紧凑表示,以便您检查其完整性并对其进行加密签名。
哈希密码的想法是,您无法从哈希中检索密码。然而,大多数密码都比它们的哈希值短,并且实施暴力破解或字典攻击是微不足道的。所以给定一个散列,使用的散列函数可以在本地实现检查逻辑——可能在大型并行计算机上,想想 GPU——并且相当快地破解密码。
您真正想要做的是使用哈希函数,它的计算量如此之大,以至于哈希需要很长时间,甚至尝试对 4 个字符的密码进行暴力攻击也需要数小时。
【讨论】:
只需在用户输入的密码中添加一些盐即可。
$salt = 'random string';
md5(sha1(md5($salt . $_POST['password'])));
这个结果几乎不可能被破解。
【讨论】: