中国商用密码杂凑算法标准----SM3算法(数字签名)
2022/1/13 22:05:07
本文主要是介绍中国商用密码杂凑算法标准----SM3算法(数字签名),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
明天就要回家惹,阿姨生日,祝happy捏
走之前,再学点东西叭!!!!
上一篇叭了叭密码学的算法简历,其中信息摘要部分提到了SHA家族和MD5,今天跑了一趟SM3,就来看看SM3算法叭~~
国密算法是国家密码管理局制定并公布的一系列国产密码算法,包括SM1\2\3\4\7\9、ZUC祖冲之算法等等。
SM3概述
SM3算法是在SHA-256基础上改进的一种算法,消息分组的长度为512位,生成的摘要长度为256位,与SHA256安全性相当。
(和上一篇的SHA256很像咧)
算法流程
填充比特
在原始数据末尾进行填充,使数据长度= 448 (mod 512),规则为先补第一个比特为1,然后都补0
若长度刚好为448也必须填充,此时需要增加512位,即填充的位数[1,512]
附加长度信息
附加长度值就是将原始数据的长度信息(无符号整数64bit)附加到已经填充消息的后面。
前两个附加长度就构成了一个长度为512整数倍的消息结构。
初始化数据
初始值IV=7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e
Tj = 79cc4519 0 ≤ j ≤ 15
7a879d8a 16 ≤ j ≤ 63
置换函数,x是消息字
P0(X) = X ⊕ (X ≪ 9) ⊕ (X ≪ 17)
P1(X) = X ⊕ (X ≪ 15) ⊕ (X ≪ 23)
8个字寄存器存储初始值ABCDEFGH
迭代过程
将消息m’分解成n个512-bit大小的块,m’=B0B1B2……Bn-1
令V0=IV=7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e
Vi+1=CF(Vi,Bi),0 ≤ i ≤ n-1 ,CF为压缩函数
消息扩展(将上一步得到的每一个消息分组Bi扩展到132*32bit的信息w[0],w[1],w[2],……,w[67], w‘[0],w’[1],w‘[2],……,w’[63] )
选择一个512bit的块Bi,将其分解为16个32bit的(big-endian)字,记为w[0],w[1],……,w[15],作为扩展消息的前16个,在递推生成剩余的116个字。
当16 ≤ j ≤ 67时,Wj ← P1(Wj−16 ⊕ Wj−9 ⊕ (Wj−3 ≪ 15)) ⊕ (Wj−13 ≪ 7) ⊕ Wj−6
当 0 ≤ j ≤ 63时,W'j = Wj ⊕ Wj+4
压缩函数:每一次轮回64次,共n次
杂凑值
信息摘要y=ABCDEFGH=Vn
这篇关于中国商用密码杂凑算法标准----SM3算法(数字签名)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API