## 关于SHA256的心得理解

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



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

1. 哈希算法的分类

2. 什么是SHA256算法

3. SHA256算法流程

4. 总结

1. 哈希算法的分类

简单来说,哈希算法主要分为以下几类:CRC,MD,SHA,Blake

lua sha256算法 sha256算法详解_sha1


2.什么是哈希算法

SHA256是SHA-2下细分出的一种算法,SHA-2,名称来自于安全散列算法2(英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准。对于任意长度的消息,SHA256都会产生一个256位长的哈希值,称作消息摘要

lua sha256算法 sha256算法详解_算法_02


这样的函数是最常用于数字签名密码保护

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. 信息预处理

在这里,话不多说,让你用一张图搞懂!

lua sha256算法 sha256算法详解_算法_03


记住这里的M,后面会用到

3.3. 逻辑运算公式

lua sha256算法 sha256算法详解_哈希算法_04


这些公式,记住他们,待会会用到的!3.4. 计算得到信息摘要

lua sha256算法 sha256算法详解_哈希算法_05


SHA256的本质就是通过该算法,把输入数据变成一个亲妈都不认识的输出,其中M(i)就是信息预处理得到的结果,当i=0时,H0(0)…H0(7)即为哈希初值。

lua sha256算法 sha256算法详解_sha1_06


定义a…g八个中间变量,后面会用到的;

lua sha256算法 sha256算法详解_哈希算法_07


这个就是计算的核心步骤了,主要是**W(j)**的构建,在程序中,这一步骤也是很容易实现的。

其中各个部分的计算是怎么来的呢?请参考3.3的逻辑运算公式。

需要注意的是:每得到一组新的a…g都要经过64轮的计算

lua sha256算法 sha256算法详解_lua sha256算法_08


最后就是不断重复这一过程,直至计算出最后的信息摘要。

其中N的大小,和M(i)中,i的大小相关,即“分块”分的越多,N越大。

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

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