哈希算法SHA-512基本概念及特性解析

2019-06-0712:20:53数据结构与算法Comments3,372 views字数 2546阅读模式

哈希算法执行过程中实际发生的事情有一个基本的了解。我使用SHA-512算法是为了帮助解释哈希函数的内部工作。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

SHA-512是一种哈希算法,它对给定的数据执行哈希函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法被广泛应用于网络安全、数字证书甚至区块链等领域。由于哈希算法在数字安全和密码学中扮演着如此重要的角色,对于称为SHA-512的哈希算法来说,这是一个易于理解的演练,包括一些基本和简单的数学知识以及一些图表。它是一组称为SHA-2的哈希算法的一部分,其中包括SHA-256,也用于比特币区块链的哈希算法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

在开始解释SHA-512之前,我认为有一个关于哈希值函数的特性的基本概念是很有用的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希函数将一些数据作为输入,并为输入数据生成固定长度的输出(称为哈希摘要)。然而,这个输出应该满足一些有用的条件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

1. 均匀分布: 由于输出哈希摘要的长度是固定的,输入大小可能会有所不同,因此很明显,对于不同的输入值,将会得到一些输出值。即使是这样,哈希函数也应该是这样的:对于任何输入值,每个可能的输出值都应该是等可能的。也就是说,对于任何给定的输入值,每个可能的输出都有相同的可能性产生。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

2. 固定长度: 这应该是不言自明的。输出值都应该是固定长度的。例如,哈希函数的输出大小可以是20个字符,也可以是12个字符,等等。SHA-512的输出大小可以是512位。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

3. 意见冲突: 简单地说,这意味着不存在任何不可能找到两个不同的输入哈希函数,导致相同的输出(哈希摘要)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

这是关于哈希函数的简单介绍。现在让我们看看SHA-512。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法- SHA-512文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

所以SHA-512分几个阶段工作。这些阶段如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

· 输入格式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

· 哈希缓冲初始化文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

· 消息处理文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

· 输出文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

让我们一个一个看。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

1. 输入格式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

SHA-512实际上不能散列任何大小的消息输入,即它有输入大小限制。这个限制是由它的结构决定的,你可以在后面看到。整个格式化的信息基本上有三个部分:原始消息、填充位、原始消息的大小。它们的组合大小应该是1024位的整数倍。这是因为格式化的消息将被处理为每个1024位的块,因此每个块应该有1024位可以使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

《pic: original message》文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

填充位文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

接收输入消息并向其添加一些填充位,以使其达到所需的长度。用于填充的位只是带有前导“1”(100,000…000)的“0”位。另外,根据算法,即使是1,也需要进行填充。所以一个内边距只能是1。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

总大小应该等于128位,而不是1024的倍数,因为目标是将格式化的消息大小作为1024位的倍数(N x 1024)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

《pic:msg + pad》文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

带有极限大小的消息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

然后,附加算法的原始消息的大小。这个大小值需要用128位表示,这是SHA-512对其输入消息有限制的唯一原因。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

自原始消息的大小需要用128位表示,消息大小可以最多(2¹²⁹1)位,也考虑到必要的单一填充,它最大的大小将(2¹²⁹2)位。尽管这个极限存在,它实际上并不造成问题,因为实际的限制是如此之高(2¹²⁹2 = 680564733841876926926749214863536422910位)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

《pic:msg + pad + size》文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

带有填充大小的消息,即填充位和消息的大小已被追加,剩下的是完全格式化的SHA-512算法输入。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

2. 哈希值值缓冲初始化:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

该算法的工作方式是使用前一个块的结果处理来自消息的每个1024位的块。现在,这给前1024位块带来了一个问题,它不能使用任何以前处理的结果。这个问题可以通过使用第一个块的默认值来解决,以便启动该进程。(看一下倒数第二张图)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

由于每个中间结果都需要用于处理下一个块,因此需要将其存储在某个地方以供以后使用。这将由哈希值值缓冲区来完成,它还将保存SHA-512整个处理阶段的最后一个哈希值值摘要,作为这些“中间”结果的最后一个。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

因此,用于启动每个1024位块的链处理的默认值也存储在处理开始时的哈希值值缓冲区中。实际使用的值无关紧要,但是对于感兴趣的人来说,使用的值是通过取前8个素数(2,3,5,7,11,13,17,19)平方根的小数部分的前64位得到的。这些值称为初始向量(IV)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

为什么是8个质数而不是9个?因为哈希值缓冲区实际上由8个子部分(寄存器)组成,用于存储它们。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

《pic:IV》文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希缓冲区和初始化向量值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

3. 消息处理:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

消息处理是在格式化的输入上进行的,每次取一个1024位的块。实际的处理是通过使用两个东西来进行的:1024位块和前一个处理的结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

SHA-512算法的这一部分包括几个“回合”和一个加法运算。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

《pic:格式化输入1024位块;n, ) = 》文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

因此,使用“消息序列发生”将消息块(1024位)扩展为“Words”。准确地说,是80个单词,每个单词的大小为64位。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

Rounds文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

消息处理阶段的主要部分可以认为是Rounds。每个轮需要3个东西:一个单词、上一轮的输出和SHA-512常量。第一Word没有可以使用其输出的前一轮,因此它对前一个1024位块使用前一个消息处理阶段的最终输出。对于格式化输入的第一个块(1024位)的第一轮,使用初始向量(IV)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

SHA-512常量是预先确定的值,每个常量用于消息处理阶段的每个轮。同样,这些不是很重要,但是对那些感兴趣的人来说,它们是前80个素数的立方根的小数部分的前64位。为什么是80个素数?因为有80轮,每轮都需要一个常数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

一旦Round函数接受这3个东西,它就对它们进行处理,并给出512位的输出。重复80轮。在第80轮之后,它的输出被简单地添加到前一个消息处理阶段的结果中,以获得此消息处理迭代的最终结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

哈希算法SHA-512基本概念及特性解析文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

4. 输出:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

在1024位的每个块通过消息处理阶段(即该阶段的最后一次迭代)之后,我们将得到原始消息的最后512位哈希值值。因此,每个块的中间结果都用于处理下一个块。当最后的1024位块完成处理后,我们就得到了原始消息的SHA-512算法的最终结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

因此,我们从原始消息中获得最终的哈希值。SHA-512是一组哈希算法的一部分,它们的工作方式非常类似,称为SHA-2。SHA-256和SHA-384等算法与SHA-512一起属于这一组。SHA-256也是比特币区块链中指定的哈希值函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

这是SHA-512哈希算法工作原理的简要概述。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13512.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/13512.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定