博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密码学摘要算法之SHA2
阅读量:4510 次
发布时间:2019-06-08

本文共 1072 字,大约阅读时间需要 3 分钟。

简述

前面的篇章中我们已经说明过,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位

2. 迭代函数与常数

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 位字

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

转载于:https://juejin.im/post/5d5e3d3bf265da03a53a3d9b

你可能感兴趣的文章
mininet test
查看>>
OOP
查看>>
找出数组中的重复元素
查看>>
Apache服务器配置
查看>>
ClickOnce清单签名取消后依然读取证书的问题
查看>>
POJ 1083
查看>>
IIS7的HTTP到HTTPS的重定向
查看>>
学习安排
查看>>
帝国cms 列表页分页样式修改美化【2】
查看>>
PL/SQL database character set(AL32UTF8) and Client character set(ZHS16GBK) are different
查看>>
2808 SCI 中断接收
查看>>
51单片机 | 定时器中断应用实例
查看>>
011 查找结点,创建节点,插入节点以及小练习
查看>>
Linux 7个运行级别(0:关机,停机模式、1:单用户模式、2:多用户模式、3:完整的多用户文本模式、4:系统未使用,保留一般不用、5:图形化模式、6:重启模式)、重置root密码方法...
查看>>
UITableViewCell的4种显示格式
查看>>
类之string类、Math类、DateTime类
查看>>
linux系统中如何确定是否存在某个命令
查看>>
安防RTSP无插件直播方案及RTSP配置规则
查看>>
[转载]oracle的表导入导出,表空间,用户名
查看>>
iOS小技巧:用runtime 解决UIButton 重复点击问题
查看>>