【发布时间】:2016-04-20 18:45:51
【问题描述】:
很明显,我们应该在写入数据库之前对密码进行加盐和哈希处理。为此,我看到了两种不同的基本方法:
-
散列前加盐
hash(password + salt) -
加盐前的哈希
hash(hash(password) + salt)
我的直觉不知何故说,由于加盐前的哈希,第二种方法有问题,但这只是我的直觉,没有密码学基础。
其中一种方法是否比另一种更安全?第二种方法有什么弱点吗?
【问题讨论】:
-
你的两个例子并不完全等价,
hash(password) + salt显然毫无意义! -
这就是HMAC 的用途,但它是安全的。但是现在你应该使用密码导向的方法,例如
PBKDF2或crypt;如果你关心安全。推导(散列)需要安全(MD5 不是)、加盐和缓慢(使尝试成本高昂。