在哈希函数是否一定需要允许任意长度的输入?问题中,许多答案讨论了SHA-2函数由于填充而成为2^{64} - 1位的理论极限。我在想,有什么安全的方法来扩展它吗?从描述来看,2^{64} -1位似乎不是一个安全限制,而是一个填充问题。
SHA-2函数是否仍然被认为是安全的,它将输入数据块分成哈希大小的2^{64} - 1位,并将前一个块的哈希用作下一个块的盐分?是否有其他选项将这些哈希函数的输入扩展到任意长度?
发布于 2021-01-13 19:08:19
SHA-256是构成SHA-2家族的两个主要哈希函数之一,在最后一个块末尾的长度编码限制了这个大小。如果您扩展了这个大小,那么您就有了具有扩展输入的安全哈希函数。
然而,有一个更容易的方法。SHA-512散列函数-- SHA-2家族中的另一个主要散列函数--以及所有派生的散列函数-- SHA-384、SHA-512/256和SHA-512/224 --已经使用128位而不是64位来编码长度。这意味着它们可以将消息散列到2^{128} - 1位。
SHA-512还扩展了状态--在从一个散列转移到另一个散列时传输的散列数据的数量--因此SHA-512及其衍生物也将更加安全。再一次,无论如何,SHA-256的循环大小可能已经足够大了.。
https://crypto.stackexchange.com/questions/87522
复制相似问题