我是密码学方面的新手,如果我要使用SHA512,但只有256位,它是等于还是类似于SHA256?
我正在努力理解是否有一种方法可以使用SHA512作为SHA256
发布于 2023-02-02 09:16:00
不,SHA-512和SHA-256是不同的散列函数,它们都属于SHA-2散列族.有一些名为“截断SHA-2”的SHA-2变体,来自Wikpedia 页面:
SHA-224和SHA-384分别是用不同的初始值计算的SHA-256和SHA-512的截断版本.SHA-512/224和SHA-512/256也是SHA-512的截断版本,但初始值是使用联邦信息处理标准(FIPS)发布180-4中描述的方法生成的。
我从来不喜欢截断的想法,因为不清楚这如何影响哈希函数的目标空间分布。我的建议是坚持完整的SHA-512或完整的SHA-256,但我不知道是否有更强的数学基础来证明这一点。
发布于 2023-02-11 22:24:42
我理解您的问题的意思是: SHA-256和SHA-512截断到256位具有相同的安全属性吗?
简短的回答是肯定的。我们没有理由相信SHA-512-截断-256位比SHA-256更安全,除非SHA-512截断-256位实际上在一个方面更安全,我将在下面解释。
沙-256和SHA-512有非常相似的设计。一次非暴力的攻击不太可能在其中一次而不是另一次上起作用。在可预见的未来(即使是量子计算机),蛮力也是遥不可及的。
如果您有一个使用SHA-256的协议,那么如果您在整个过程中使用SHA-512-截断到-256位而不是SHA-512位,该协议将是同样安全的。但是,您应该使用SHA-512/256位,而不是SHA-512-截断-256位(定义和引用请参见维基百科 )。SHA-512/256是SHA-512的一个略为修改的变体,具有不同的常数。使用不同常量的优点是,如果协议的不同部分也使用SHA-512,则可以避免意外标识。例如,假设协议使用SHA-512(x)作为密钥,SHA-256(x)作为IV (其中x是一些秘密密钥);如果使用SHA-512-truncated-to-256-bits(k)作为IV,则需要公开一半的密钥。这类问题的实际例子往往很难发现,因此建议不要仅仅截断哈希。
有一个方面,截断的SHA-512 (无论是SHA-512-截断-256位还是SHA-512/256)实际上比SHA-256更安全。在这种情况下,哈希函数用于比散列函数更强的属性,例如构造MAC或伪随机值。SHA-512和SHA-256容易受到长度扩展攻击的攻击:如果您知道SHA-256(x)和length(x),而不知道x本身,那么就会有一个后缀y,您可以将其附加到x中,这样就可以知道SHA-256(x||y)。如果哈希被截断,则此攻击不适用。
请注意,与SHA-256相比,SHA-512的唯一优点是它在64位处理器上没有加速就更快了(除了较长的大小,但您并不关心这一点)。如果协议中涉及的计算机中没有32位处理器或64位处理器具有SHA-256加速,但没有SHA-512加速,这才是一个优势。
https://crypto.stackexchange.com/questions/104026
复制相似问题