我只是想知道,为什么有些库(无论是任何语言)都使用迭代散列,以便散列数据以十六进制编码并再次重新散列,而不是重新散列实际的二进制输出?
答案 0 :(得分:0)
阅读本页,特别是最后关于迭代散列和双重散列的部分http://hungred.com/useful-information/enhance-security-hash-function-web-development/
我猜这些部分的tl; dr版本将是最后的句子说:“因此,请尝试避免双重散列并转而进行迭代散列。此外,使用相同算法进行两次散列被认为是次优的。”
答案 1 :(得分:-1)
如果将迭代直接应用于相同散列的结果,则引入额外的步骤来防止可能开始产生相同或类似输出的散列。这个额外的步骤独立于散列实现,并且本身充当另一个不会受到伤害的重新散列阶段。可靠的哈希值不需要这些预防措施 - 但是如果某些哈希算法有一些未知的缺陷,你就不会事先知道。