中國商用密碼雜湊算法標准----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,Bi0 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(Wj16 Wj9 (Wj3 15)) (Wj13 7) Wj−6

當  0 j 63時,W'j = Wj Wj+4

 

壓縮函數:每一次輪回64次,共n次

 

 

 

雜湊值

信息摘要y=ABCDEFGH=Vn

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM