SM3密码杂凑算法原理
目錄
1.概述
2、算法描述
2.1 概述
2.2 填充
2.3 迭代壓縮
2.3 消息擴展
2.4 壓縮函數
2.5 雜湊值
1.概述
SM3是我國采用的一種密碼散列函數標準,由國家密碼管理局于2010年12月17日發布。相關標準為“GM/T 0004-2012 《SM3密碼雜湊算法》”。
在商用密碼體系中,SM3主要用于數字簽名及驗證、消息認證碼生成及驗證、隨機數生成等,其算法公開。據國家密碼管理局表示,其安全性及效率與SHA-256相當。
在信息安全中,有許多重要的應用,都使用了密碼散列函數來實現,例如數字簽名,消息認證碼。
特性
一個理想的密碼散列函數應該有四個主要的特性:
-
對于任何一個給定的消息,它都很容易就能運算出散列數值。
-
難以由一個已知的散列數值,去推算出原始的消息。
-
在不更動散列數值的前提下,修改消息內容是不可行的。
-
對于兩個不同的消息,它不能給與相同的散列數值。
本文主要介紹了SM3密碼雜湊算法的計算方法和計算步驟,感興趣的讀者可以了解SM3算法背后的數學原理,源碼會在另一篇文章介紹:SM3密碼雜湊算法源碼解析_10點43的博客-CSDN博客_sm3 源碼。
2、算法描述
2.1 概述
對長度為l(l < 264) 比特的消息m, SM3雜湊算法經過填充和迭代壓縮,生成雜湊值,雜湊值長度為256比特。
2.2 填充
假設消息m 的長度為l 比特。首先將比特“1”添加到消息的末尾,再添加k 個“0”, k是滿足l + 1 + k ≡ 448mod512 的最小的非負整數。然后再添加一個64位比特串,該比特串是長度l的二進制表示。填充后的消息m′ 的比特長度為512的倍數。
例如:對消息01100001 01100010 01100011,其長度l=24,經填充得到比特串:
2.3 迭代壓縮
將填充后的消息m′按512比特進行分組:
其中n=(l+k+65)/512。
對m′按下列方式迭代:
FOR i=0 TO n-1
? ? ? ??
ENDFOR
其中CF是壓縮函數, 為256比特初始值IV, 為填充后的消息分組,迭代壓縮的結果為。
初始向量為:IV= 7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e
流程如圖所示:
2.3 消息擴展
2.4 壓縮函數
令A,B,C,D,E,F,G,H為字寄存器,SS1,SS2,TT1,TT2為中間變量,壓縮函數,計算過程描述如下:
中間計算過程如圖所示:
2.5 雜湊值
總結
以上是生活随笔為你收集整理的SM3密码杂凑算法原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手眼标定算法
- 下一篇: 人工智能 一种现代方法 第3章 通过搜索