#声明:本文创作内容含代码均为个人创作所得,允许学习、传阅,不得用于商业用途#
#本文包含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根据下面公式迭代:
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