1. 程式人生 > >SM3密碼雜湊演算法原理

SM3密碼雜湊演算法原理

1.概述

SM3中華人民共和國政府採用的一種密碼雜湊函式標準,由國家密碼管理局於2010年12月17日釋出。相關標準為“GM/T 0004-2012 《SM3密碼雜湊演算法》”。

商用密碼體系中,SM3主要用於數字簽名及驗證、訊息認證碼生成及驗證、隨機數生成等,其演算法公開。據國家密碼管理局表示,其安全性及效率與SHA-256相當。

資訊保安中,有許多重要的應用,都使用了密碼雜湊函式來實現,例如數字簽名訊息認證碼

特性

一個理想的密碼雜湊函式應該有四個主要的特性:

  • 對於任何一個給定的訊息,它都很容易就能運算出雜湊數值。

  • 難以由一個已知的雜湊數值,去推算出原始的訊息。

  • 在不更動雜湊數值的前提下,修改訊息內容是不可行的。

  • 對於兩個不同的訊息,它不能給與相同的雜湊數值。

本文主要介紹了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 雜湊值