#声明:本文创作内容含代码均为个人创作所得,允许学习、传阅,不得用于商业用途#

#本文包含SHA-256从算法到硬件实现的全部#

#实践会让你更加透彻理解算法原理,才能让知识灌入大脑#

在开始前请先容许我MMP 联邦信息处理标准 ,因为你们给出的PDF有误,导致我denbug到了凌晨两点半。

SHA-256整个算法架构和SM3一样,第一步拼接,第二步迭代,区别是迭代过程中的对数据逻辑运算不一样,这里算法我就简单说明,大家可以和专栏里面SM3对比起来看。

SHA(Secury  Hash Standrad)是一种信息摘要码(MDC),主要应用信息传输,加解密,存储等信息领域,简单理解就是任何一组消息,都可以压缩成一个固定位宽的长度数据,只要消息中的任何1 比特发生改变,该消息的hash值就会发生变化。

比如,我们从某网页下载一个软件包,一般该网页会给出这个软件包的摘要值,当我们下载后,可以计算下载后软件包的摘要值,并与官网比较,看是否是一样,如果一样,则可以认为下载过程中,没有出现信息错误,如果摘要值不一样,则信息在通过网络传输出现了误码情况

SHA有多种标准,如SHA-1,SHA-256,SHA-384,SHA-512等,这些不同标准的区别在于生成的摘要值的长度不一样,SHA-256生成摘要长度为256比特,这些不同标准的算法实现不一样,但算法架构一样,那为啥出现这么多种标准呢?因为应用场景对安全性的要求不一样;我们可以简单认为一段消息的摘要值是确定的,消息改变了,摘要值也改变,但如果消息很长,其中某些比特出现错位,其消息摘要值不变,这种概率是存在的,但很小;不同标准对应的概率不一样。

二 算法说明

我们以SHA-256来说明

第一步填充:

目的是为了确保消息的bit长度是512的倍数

先把bit 1 附加在消息尾部,然后再附加上k个 bit 0,使得 L+ K+ 1 = 448 mode 512,这里L是消息二进制的bit长度;然后再把L转化为一个64 bit 二进制数,如果二进制数位宽不够,则高位补0,然后把这 64bit 附加在上一步操作后的消息的尾部

例如下图:

说明:这里我们消息为 ‘ abc ’,一个三个字母,这里每个字母的ASIIC的表示是8个bit,那消息的bit 长度是24,十进制24用二进制表示就是11000,那填充后的消息长度是:8+8+8+423+64 = 512

第二步模块分解:

消息按照每512bit来作为一组,我们把每个512bit 分成16个字(32bit),根据这16个字,我们迭代出64个字W0,W1, ...,W63,  即{W0, W1,W2...,W15} = 512bit block消息

其中W0~ W15就是一组消息里面的16个字,然后剩下的W16~W63根据下面公式迭代:

W_{i}=\sigma_1{}(W_{i-2})+W_{i-7}+\sigma_0{}(W_{i-15})+W_{i-16} i=16.17...63

每一组512bit消息都要这么多迭代,假设有M个512bit消息,那就会有M组Wi,其中i=0~~63;为啥要每组要迭代出64个Wi呢?因为每组512bit消息需要经过64轮迭代,每一轮迭代需要一个Wi,所以上面每512bit消息生成了64个Wi;

说明:公式里的sigma0,sigma1是一个函数,具体形式后面给出

第三步迭代计算

填充后的消息块我们用

文章目录 sha 256 算法 一步一步 实现 简介 hash 运算流程Step1exampleStep2C语言 实现 变量名 hash 的初始值 hash 加密过程的常量 hash 运算 hash 结构体 hash _init hash _update hash _caculator hash _finalmainresultSrc sha 256 在线计算参考博客 sha 256 算法 一步一步 实现 sha 256 能够对任意长度的消息生成64个十六进制字符串。 hash 运算流程 Step1 报文长度以bit计算,在报文末尾进行填充,使得报文长度对512取模以
国密 算法 是由国家密码局发布,包含SM1\ SM2\ SM3 \ SM4\ SSF33 算法 。 国际 算法 是什么? 国际 算法 由美国的安全局发布,是现今最通用的商用 算法 。 密码学中应用最为广泛 算法 都有哪些。 密码学中应用最为广泛的的三类 算法 包括对称 算法 (分组密码 算法 )、非对称 算法 (公钥密码算... SHA 256 SHA - 2下细分出的一种 算法 SHA - 2,名称来自于安全散列 算法 2(英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数 算法 标准,由美国国家安全局研发,属于 SHA 算法 之一,是 SHA - 1的后继者。 SHA - 2下又可再分为六个不同的 算法 标准 包括了: SHA - 224、 SHA - 256 SHA - 384、 SHA - 512、 SHA - 512/2...
SHA 家族的五个 算法 ,分别是 SHA - 1、 SHA - 224、 SHA - 256 SHA - 384, SHA - 512,由美国国家安全局(NSA)所规划,并由美国国家规范 技能研究院(NIST)发布。 该 算法 是美国的政府规范 算法 ,后四者有时并称为 SHA - 2。 SHA 在很多安全协定中广为运用,包含TLS SSL、PGP、SSH、S/MIME IPsec,曾被视为是MD5(更早之前被广为运用的杂凑函数)的后继者。 但 SHA - 1的安全性现在被密码学家严峻质疑,有学者曾经爆出NSA在 SHA - 1留下的后门。 虽然至今尚未出现对SH