密码学摘要算法之SHA2

密码学摘要算法之SHA2

简述

前面的篇章中我们已经说明过,SHA实际包括有一系列算法,分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。而我们所说的SHA2实际是对后面4中的统称。各种SHA算法的数据比较如下表,其中的长度单位均为:数据表

原理

  1. 消息的填充与解析

    消息填充的目的是为了在消息填充后,在SHA-224和SHA-256中消息的长度正好是512位的整数倍,SHA-384和SHA-512中消息的长度是1024位的整数倍
    

接下来我们说明消息或者数据文件将如何实现填充。总的来说就是,先添加一个“1”,再后跟多个“0”,然后再追加一个64(SHA-384和SHA-512是128)位的消息长度信息,使得填充完成后的消息长度正好是512(SHA-384和SHA-512是1024)位的整数倍。追加的消息长度信息是原始消息的位长,填充完成的消息会被分成512(SHA-384和SHA-512是1024)位的消息分组

对于SHA-224和SHA-256来说消息的最大长度L<2^64,在对消息进行散列运算之前需要对消息做相应的填充处理

  • 在原始信息之后填充一个“1”,例如:如果原始信息是"01010000",完成这一填充之后就是 “010100001”。
  • 在完成上一步填充后,在其后面需天充一定数量的“0”,数量记为K,则K的取值必须是满足下述表达式的最小非负整数值
    ( L + 1 + K ) mod 512 = 448(SHA256) 或者( L + 1 + K ) mod 1024 = 896(SHA512)
  • 在填充完必的消息后,追加原始消息长度,因为消息的长度不会超过2^64位,所以其长度数据的值不会超过64位.填充完毕后,所有的消息分组都将是一个512位
  1. 迭代函数与常数

    SHA算法这类散列算法的计算过程都需要用到逻辑函数和计算常量。但由于具体算法的不同所使用的具体的函数和常数略有差别。我们在前面的篇章中说过MD5和SHA1,它们都有4个逻辑函数,而在SHA2的一系列算法中都采用了6个逻辑函数
    

SHA-224和SHA-256采用6个逻辑函数,每个函数均基于32位字运算,这些输入的32位字,我们记为x、y、z,同样的这些函数的计算结果也是一个32位字.而SHA-384和SHA-512每个函数操作64位的输入字(x、y、z),输出也是一个新的 64 位字

  1. 计算过程(这部分有点复杂,暂时没研究透)

猜你喜欢

转载自blog.csdn.net/qq_30357519/article/details/85005611
今日推荐