【发布时间】:2010-09-16 02:14:22
【问题描述】:
我正在构建一个 Web 应用程序,并希望对密码使用最强的哈希算法。 sha512、whirlpool、ripemd160 和tiger192,4 之间有什么区别(如果有的话)?哪一个会被认为在密码学上更强大?
【问题讨论】:
-
定义“最强”的含义。
-
我通常会想到找到散列到给定值的输入所需的资源。
标签: hash
我正在构建一个 Web 应用程序,并希望对密码使用最强的哈希算法。 sha512、whirlpool、ripemd160 和tiger192,4 之间有什么区别(如果有的话)?哪一个会被认为在密码学上更强大?
【问题讨论】:
标签: hash
bCrypt - 为什么会有很长的解释,我推荐Enough With The Rainbow Tables: What You Need To Know About Secure Password Schemes
基本上,它是安全的,它很慢,它已经实现了。
【讨论】:
如果您真的关心系统的安全性(而不是算法的学术实力),那么您应该使用经过验证且成熟的实现,而不是吹毛求疵的算法。
我会推荐Ulrich Drepper's SHA-crypt implementation。此实现使用 SHA-512,一种 16 个字符的长盐,经过同行评审,并计划通过 glibc 2.7 进入所有主要的 Linux 发行版。
P.S.:一旦您达到此安全级别,black helicopters 无论如何都会访问您。
【讨论】:
David,这些都是非常强大的功能。即使是大肆宣传的 MD5 冲突也不是密码破解类型,它们只是生成两个具有相同 MD5 的不同字符串(与查找生成给定 MD5 值的字符串的命题非常不同)。
如果您担心密码的安全性,则需要担心用于存储密码的协议、用于恢复用户忘记的密码的协议以及所有其他可能的攻击途径。与暴力破解密码分析相比,这些选项更常用于破解密码。
不过,请务必使用盐。
但首先阅读AviewAnew发布的文章
【讨论】:
这是一个很好的post on coding horror about storing passwords。简而言之,他建议使用带有随机唯一盐的 bcrypt 或 SHA-2。
【讨论】: