密码学:关于SHA-512的解释

当前位置:首页 > 币圈百科 > 密码学:关于SHA-512的解释

密码学:关于SHA-512的解释

2023-01-14币圈百科1261

这是为了让您对哈希算法执行过程中实际发生的事情有一个基本的了解。我使用SHA-512算法来帮助解释哈希函数的内部工作。SHA-512是一种哈希算法,对给定数据执行哈希函数。哈希算法广泛应用于网络安全、数字证书甚至区块链。因为哈希算法在数字安全和密码学中起着如此重要的作用,所以对于被称为SHA-512的哈希算法来说,这是一个简单易懂的练习,包括一些基本简单的数学知识和一些图表。它是一套称为SHA-2的哈希算法的一部分,包括SHA-256,也用于比特币区块链的蓑衣网小编2022哈希算法。

在解释SHA-512之前,我认为有一个关于哈希函数特性的基本概念是非常有用的。

Hash函数

Hash函数将一些数据作为输入,并为输入的数据生成一个固定长度的输出(称为hash digest)。然而,这个输出应该满足一些有用的条件。1.均匀分布:由于输出哈希摘要的长度是固定的,而输入大小可能不同,因此很明显,对于不同的输入值,会获得一些输出值。即便如此,哈希函数也应该是这样的:对于任何输入值,每一个可能的输出值都应该是同等可能的。也就是说,对于任何给定的输入值,每一个可能的输出都有相同的可能性。2.定长:这个应该不言而喻。输出值应该都是固定长度的。例如,哈希函数的输出大小可以是20个字符、12个字符等等。SHA-512的输出大小可以是512位。3.观点冲突:简单来说,这意味着没有不可能找到两个不同的输入哈希函数,导致相同的输出(哈希摘要)。这是一个关于哈希函数的简单介绍。现在让我们看看SHA-512。

哈希算法-SHA-512

所以SHA-512分几个阶段工作。这些阶段如下:输入格式、散列缓冲区初始化、消息处理和输出。我们一个一个来看。

1。输入格式:

SHA-512实际上不能散列任何消息输入,也就是说,它有输入大小限制。这个限制是由它的结构决定的,后面可以看到。整个格式化信息基本上有三个部分:原始消息、填充位和原始消息的大小。它们的组合大小应该是1024位的整数倍。这是因为格式化的消息将被处理成1024位的块,所以每个块应该有1024位可用。

蓑衣网小编2022

填充位接收输入消息,并在其中添加一些填充位,使其达到要求的长度。用于填充的位只有以“1”开头的“0”位(100,000 … 000)。另外,根据算法,即使是1,也需要填充。所以内边距只能是1。总大小应该等于128位,而不是1024的倍数,因为目标是将格式化的消息大小用作1024位的倍数(N x 1024)。

一封大小有限的邮件。然后,附上算法原始消息的大小。这个大小值需要用128位来表示,这是SHA-512限制其输入消息的唯一原因。原始消息的大小需要用128位表示,消息大小最多可以是(212?1)位,考虑到必要的单个填充,其最大大小将为(212?2)位。虽然这个限制是存在的,但实际上并不会产生问题,因为实际限制是如此之高(212?2=6805647338384). 191848986

具有填充大小的消息,即填充比特和消息大小已被追加,其余是完全格式化的SHA-512算法输入。

2。哈希值缓冲区初始化:

该算法的工作模式是使用前一个块的结果处理来自消息的每一个1024位的块。现在,这给第一个1024位块带来了一个问题,它不能使用任何以前的处理结果。这个问题可以通过使用第一个程序块的缺省值来解决。(看倒数第二张图)。由于每个中间结果都需要用于处理下一个块,因此需要将其存储在某个地方以备后用。 这将由散列值缓冲器来完成,该缓冲器还将保存SHA-512的整个处理阶段的最后散列值摘要,作为这些“中间”结果的最后一个。因此,用于开始每个1024位块的链处理的缺省值也在处理开始时存储在散列值缓冲器中。实际使用的值无关紧要,但对于感兴趣的人来说,使用的值是取前8个素数(2,3,5,7,11,13,17,19)的平方根的小数部分的前64位。这些值被称为初始向量(IV)。为什么有8个质数而不是9个?因为哈希缓冲区实际上由八个子部分(寄存器)组成,用于存储它们。

哈希缓冲区和初始化向量值3。消息处理:消息处理是对格式化的输入进行的,一次处理一个1024位的块。实际的处理是通过使用两个东西来执行的:1024位块和前面处理的结果。SHA-512算法的这一部分包括几轮和一次加法运算。

因此,使用“消息序列出现”将蓑衣网小编2022消息块(1024位)扩展为“单词”。准确的说是80个字,每个字的大小是64位。

Rounds

消息处理阶段的主要部分可以被认为是Rounds。每一轮都需要三样东西:一个单词、上一轮的输出和SHA-512常数。第一个字没有可以使用其输出的前一轮,因此它使用前一个1024位块的前一个消息处理阶段的最终输出。对于格式化输入的第一块(1024位)的第一轮,使用初始向量(IV)。SHA-512常数是预先确定的值,并且每个常数用于每一轮消息处理阶段。同样,这些不是很重要,但是对于感兴趣的人来说,它们是前80个素数的立方根的小数部分的前64位。为什么是80个质数?因为有80个回合,每个回合都需要一个常数。一旦Round函数接受了这三件事,它就处理它们并给出一个512位的输出。重复80回合。在第80轮之后,其输出被简单地添加到前一消息处理阶段的结果,以获得该消息处理迭代的最终结果。

4。输出:

每个1024位的块经过消息处理阶段(此阶段的最后一次迭代)后,我们将得到原始消息的最后一个512位哈希值。因此,每个块的中间结果用于处理下一个块。当最后一个1024比特的块被处理时,我们得到原始消息的SHA-512算法的最终结果。因此,我们从原始消息中获得最终的哈希值。SHA-512是一组哈希算法的一部分,其工作方式非常相似,被称为SHA-2。SHA-256、SHA-384和SHA-512等算法属于这一类。SHA-256也是比特币区块链中指定的哈希函数。这是对SHA-512哈希算法工作原理的简要概述。我打算进一步阐述是什么使得散列函数实际上是不可逆的(单向的)以及它如何帮助数字安全。

密码学:关于SHA-512的解释 | 分享给朋友: