如何最好地组成两个加密哈希?

时间:2014-01-22 17:53:04

标签: cryptography cryptographic-hash-function

给定两个加密哈希值(例如使用SHA1):

hash1 = sha1(data1)
hash2 = sha1(data2)

我想将两个哈希值组合成一个“看起来像”另一个哈希的值(例如,对于SHA1,它是160位)。假设只知道hash1hash2data1data2未知。

选项1:计算两个哈希串联的哈希值:

hash3 = sha1(concat(hash1, hash2))

选项2:计算两个哈希的XOR:

hash3 = hash1 XOR hash2

哪个选项不太可能发生碰撞?

1 个答案:

答案 0 :(得分:2)

如果您担心哈希冲突,最好的办法是尽可能使用更好的哈希算法(例如SHA-2或SHA-3)。

但是,要回答你的问题:给定两个值,如果你对它们进行异或,你甚至可以在进行散列之前看到碰撞。例如,1110 XOR 1111是0001,而0011 XOR 0011也是0001.另一方面,连接这些值不能引入预散列冲突。所以我会连接。