HASH和HMAC(4):SHA-224和SHA-256算法原理
协议标准:https://csrc.nist.gov/CSRC/media/Publications/fips/180/2/archive/2002-08-01/documents/fips180-2withchangenotice.pdf
算法处理分如下几步:
- 消息填充
消息填充分为两部分:第一部分是附加填充比特,第二部分是附加长度,目的是让整个消息满足指定的结构,从而处理起来可以统一化、格式化。
附加填充比特:指在消息尾部进行填充,使报文长度在对512取模后的余数为448。具体操作是:先被1比特1,然后都被0,直到满足对512取模余448。需要注意的是:即使原始消息长度已经满足对512取模余448,补位也需要进行,这时地填充512比特。所以附加填充时至少补1位,最多补512位。
附加长度:将原始数据的长度信息补到已经进行了填充的消息后面。
- 消息分组
消息分组指将消息填充后的数据按512bit(16*32bit)进行分组,并扩充为64*32bit,扩充算法如下:
当 0 ≤ t ≤ 15 时,W[t] = M[t],M[t]为512bit原始数据中第t个32bit数据。
当 16 ≤ t ≤ 63时,W[t] = W[t-7] + (W[t-2] >>> 17) ⊕ (W[t-2] >>> 19) ⊕ (W[t-2] >> 10) + \
W[t-16] + (W[t-15] >>> 7) ⊕ (W[t-15] >>> 18) ⊕ (W[t-15] >> 3)
消息填充和消息分组处理图示如下:
- 迭代运算
SHA-224/SHA-256算法对输入的消息进行64轮迭代运算,分别输出224bit和256bit的HASH结果。
SHA-224/SHA-256处理过程中会用到8个哈希初值和64个哈希常量。
SHA-224/SHA-256的8个哈希初值分别为:
SHA-224:
A=0xC1059ED8,B=0x367CD507,C=0x3070DD17,D=0xF70E5939
E=0xFFC00B31,F=0x68581511,G=0x64F98FA7,H=0xBEFA4FA4
SHA-256:
A=0x6A09E667,B=0xBB67AE85,C=0x3C6EF372,D=0xA54FF53A
E=0x510E527F,F=0x9B05688C,G=0x1F83D9AB,H=0x5BE0CD19
64个哈希常量:
0x428A2F98 |
0x71374491 |
0xB5C0FBCF |
0xE9B5DBA5 |
0x3956C25B |
0x59F111F1 |
0x923F82A4 |
0xAB1C5ED5 |
0xD807AA98 |
0x12835B01 |
0x243185BE |
0x550C7DC3 |
0x72BE5D74 |
0x80DEB1FE |
0x9BDC06A7 |
0xC19BF174 |
0xE49B69C1 |
0xEFBE4786 |
0x0FC19DC6 |
0x240CA1CC |
0x2DE92C6F |
0x4A7484AA |
0x5CB0A9DC |
0x76F988DA |
0x983E5152 |
0xA831C66D |
0xB00327C8 |
0xBF597FC7 |
0xC6E00BF3 |
0xD5A79147 |
0x06CA6351 |
0x14292967 |
0x27B70A85 |
0x2E1B2138 |
0x4D2C6DFC |
0x53380D13 |
0x650A7354 |
0x766A0ABB |
0x81C2C92E |
0x92722C85 |
0xA2BFE8A1 |
0xA81A664B |
0xC24B8B70 |
0xC76C51A3 |
0xD192E819 |
0xD6990624 |
0xF40E3585 |
0x106AA070 |
0x19A4C116 |
0x1E376C08 |
0x2748774C |
0x34B0BCB5 |
0x391C0CB3 |
0x4ED8AA4A |
0x5B9CCA4F |
0x682E6FF3 |
0x748F82EE |
0x78A5636F |
0x84C87814 |
0x8CC70208 |
0x90BEFFFA |
0xA4506CEB |
0xBEF9A3F7 |
0xC67178F2 |
SHA-224/256迭代运算的详细流程为:
1. 哈希初值赋值:
H0=A,H1=B,H2=C,H3=D,H4=E,H5=F,H6=G,H7=H
2. 64轮迭代运算
for (t=0; t≤63; t++)
{
T1 = H + (E >>> 6) ⊕ (E >>> 11) ⊕ (E >>>25) + (E & F) ⊕ (~E & G) + K[t] + W[t]
T2 = (A >>> 2) ⊕ (A >>> 13) ⊕ (A >>>22) + (A & B) ⊕ (A & C) ⊕ (B & C)
H = G;
G = F;
F = E;
E = D + T1;
D = C;
C = B;
B = A;
A = T1 + T2;
}
3. 结果输出
SHA-224输出224bit:
H0=H0+A,H1=H1+B,H2=H2+C,H3=H3+D,H4=H4+E,H5=H5+F,H6=H6+G
SHA-256输出256bit:
H0=H0+A,H1=H1+B,H2=H2+C,H3=H3+D,H4=H4+E,H5=H5+F,H6=H6+G,H7=H7+H
HASH和HMAC(4):SHA-224和SHA-256算法原理相关推荐
- HASH和HMAC(5):SHA-384、SHA-512、SHA-512/224和SHA-512/256算法原理
协议标准:https://csrc.nist.gov/CSRC/media/Publications/fips/180/2/archive/2002-08-01/documents/fips180-2 ...
- 【转】HMAC哈希消息认证码及算法原理
HMAC算法原理 HMAC算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在Hash加密算法基础上的.它要求通信双方共享密钥.约定算法.对报文进行Hash运算,形成固定长度的认证码.通信双方 ...
- HASH和HMAC(7):SHA3-224/256/384/512算法原理
协议标准:https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf SHA3的算法处理类似于SHA1/2,整个处理过程可归纳为: 消息填充和消息 ...
- SHA 256算法是什么?哈希算法有哪些特点,主要应用在哪里?
无论数字证书品牌.价格和类型如何,所有SSL证书的通用规范是采用SHA 256算法,您可以在证书详细信息或产品信息中列出的功能中看到.对于非技术人员来说,SHA 256 算法通常是个谜,但是锐成信息将 ...
- HASH和HMAC(1):HASH和HMAC概述
HASH(哈希)函数是信息安全中一个非常重要的工具,它对一个任意长度的消息m施加运算,返回一个固定长度的HASH值h(m),HASH函数h是公开的,对处理过程不用保密.HASH值又被称为哈希值.杂凑值 ...
- SHA算法原理与常用实现
看本文前,最好先看看之前的这一篇关于MD5算法的介绍. MD5算法原理与常用实现 本文目录 定义 MD5和SHA-1的碰撞问题 常见应用场景 1.类似MD5的应用场景 2.比特币 3.https签名算 ...
- Java算法之 一致性hash算法原理及实现
为什么80%的码农都做不了架构师?>>> 一致性hash算法原理及实现 转载于:https://my.oschina.net/90888/blog/1645131
- 一致性 Hash 算法原理总结
一致性 Hash 算法是解决分布式缓存等问题的一种算法,本文介绍了一致性 Hash 算法的原理,并给出了一种实现和实际运用的案例: 一致性 Hash 算法背景 考虑这么一种场景: 我们有三台缓存服务器 ...
- HASH和HMAC(8):HMAC算法原理
HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写,在1997发布的RFC2104中被公布.它可以与任何迭代HASH函数(SH ...
- HASH和HMAC(3):SHA-1算法原理
协议标准:https://csrc.nist.gov/CSRC/media/Publications/fips/180/2/archive/2002-08-01/documents/fips180-2 ...
最新文章
- Please do not register multiple Pages in pages/buildhelp/buildhelp.js
- Java客户端访问HBase集群解决方案(优化)
- java字符生成器_Java实现简单字符生成器代码例子
- oracle安装及使用常见错误
- echart 饼图设置指引线_表示整体和部分的条饼图,走起!|Excel144
- urllib2.urlopen超时问题
- 走进英特尔中国研究院探索创新日:发布最新科研成果与创新策略
- 如何使用Docker轻松设置Ruby on Rails开发环境
- 天津农学院计算机考研专业,2021年天津农学院计算机与信息工程学院考研专业目录_研究生考试范围 - 学途吧...
- 装完机,启grub+Linux,linux一路填坑...
- puml绘制思维导图_定制工作计划有哪些操作,4款工作思维导图模板助你效率蹭蹭上涨...
- linux模块builtin是什么意思,Linux命令手册
- 服务器远程桌面一直正在配置,关于远程桌面一直显示正在配置远程会话
- win10 系统 程序员计算器面板介绍和功能使用
- python教师管理系统,Python面向对象实战:学生教师信息管理(3)
- 图像迁移风格保存模型_图像风格迁移原理
- 计算机审计取证方法,审计技术方法有几种
- linux rm 文件找回_Linux下用rm删除的文件的恢复方法
- 关于Web 验证方法你知道几种
- matlab零序五次谐波,基于5次谐波的小电流接地系统故障选线方法仿真与分析.docx...