散列多个值 - 最安全的方法?

时间:2012-03-17 07:29:44

标签: hash salt

hash(value1 & value2 & salt)
hash(hash(value1 & value2) & salt)
hash(hash(value1 & value2) & hash(salt))
hash(hash(value1 & salt) & hash(value2 & salt))
hash(hash(value1 & salt1) & hash(value2 & salt2))
hash(value1 & salt1 &value2 & salt2)
hash(value1 & salt1) and hash(value2 & salt2)  '2 separate hashes for each input

在需要2个'密码'来访问特定功能的应用程序中(无论出于何种原因),盐是大型随机字符串。获取最终哈希值的最佳方法是什么? (不一定是上述之一)

外部/最终哈希算法与内部哈希算法的区别是否更好?

附带问题:主要是为了让短暂的,蹩脚的用户pw更加安全免受蛮力攻击?所以,如果pw很大(比如图像文件的ByteArray),盐会添加任何真正的目的吗?感谢。

1 个答案:

答案 0 :(得分:2)

假设&表示连接,最安全的是:

hash(value1 & delim & value2 & delim & salt)

...其中delim是一个分隔符,不能出现在任何其他字符串中。无关的值1,值2和盐出现在哪个。

分隔符可防止别名,例如(value1, value2) = ('fail', 'stone')(value1, value2) = ('fails', 'tone')