ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

中国商用密码杂凑算法标准----SM3算法(数字签名)

2022-01-13 20:35:56  阅读:230  来源: 互联网

标签:16 数字签名 SM3 Wj 算法 长度 512


明天就要回家惹,阿姨生日,祝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

 

标签:16,数字签名,SM3,Wj,算法,长度,512
来源: https://www.cnblogs.com/0211ji/p/15799530.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有