关于SHA256的心得理解(流程层面)

## 关于SHA256的心得理解

    • 1. 哈希算法的分类
    • 2. 什么是SHA256算法
    • 3. SHA256算法流程
    • 4. 总结

最近在整理一些关于加密的常用算法,虽然都是比较成熟的东西了,但是很多的流程不是很便于理解,于是整理成了一系列文档,和大家一起分享,希望大家理性讨论,喜欢的点点赞啊!!!啾咪!!!

1. 哈希算法的分类

2. 什么是SHA256算法

3. SHA256算法流程

4. 总结

1. 哈希算法的分类
简单来说,哈希算法主要分为以下几类:CRC,MD,SHA,Blake
关于SHA256的心得理解(流程层面)_第1张图片
2.什么是哈希算法
SHA256是SHA-2下细分出的一种算法,SHA-2,名称来自于安全散列算法2(英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准。对于任意长度的消息,SHA256都会产生一个256位长的哈希值,称作消息摘要
关于SHA256的心得理解(流程层面)_第2张图片
这样的函数是最常用于数字签名密码保护

3. 哈希算法流程
哈希算法的流程主要包括四个部分:

3.1.常量初始化
3.2. 信息预处理
3.3. 逻辑运算公式
3.4. 计算得到信息摘要

3.1.常量初始化:

常量初始化主要包括两个部分,分别是8个哈希初值H(0)—H(7),64个哈希常量K(1)—K(64)。
其中哈希初值是对自然数中前8个质数(2,3,5,7,11,13,17,19)的平方根的小数部分取前32bit而来。

如:√2的小数部分约 0.414213562373095048
0.414213562373095048 = 0x6a09e667(十六进制,取前32位)

其中哈希常量64个常量,对自然数中前64个质数(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97…)的立方根的小数部分取前32bit而来。

在这一部分,网上的其他大佬已经说的足够清晰了,在此不做赘述。

3.2. 信息预处理

在这里,话不多说,让你用一张图搞懂!
关于SHA256的心得理解(流程层面)_第3张图片
记住这里的M,后面会用到
3.3. 逻辑运算公式
关于SHA256的心得理解(流程层面)_第4张图片
这些公式,记住他们,待会会用到的!

3.4. 计算得到信息摘要
关于SHA256的心得理解(流程层面)_第5张图片
SHA256的本质就是通过该算法,把输入数据变成一个亲妈都不认识的输出,其中M(i)就是信息预处理得到的结果,当i=0时,H0(0)…H0(7)即为哈希初值。
关于SHA256的心得理解(流程层面)_第6张图片
定义a…g八个中间变量,后面会用到的;

关于SHA256的心得理解(流程层面)_第7张图片
这个就是计算的核心步骤了,主要是**W(j)**的构建,在程序中,这一步骤也是很容易实现的。
其中各个部分的计算是怎么来的呢?请参考3.3的逻辑运算公式。
需要注意的是:每得到一组新的a…g都要经过64轮的计算
关于SHA256的心得理解(流程层面)_第8张图片
最后就是不断重复这一过程,直至计算出最后的信息摘要。
其中N的大小,和M(i)中,i的大小相关,即“分块”分的越多,N越大。

4. 总结
SHA256是一种常见的加密算法,安全性高,广泛应用于数字签名和密码加密

SHA256算法较为成熟,可实现性高

第一次写文章,大家多多关照!!!
评论区欢迎大家理性讨论!!!
因为鄙人和单片机啊、嵌入式啊打交道多一点,后续可能还会分享一些其他的加密。签名以及在单片机上实现的文章。
关注我!!!点点赞!!!点赞超过15个,第二天就更新!!!

你可能感兴趣的:(哈希算法,算法,sha1)