SM3算法
SM3算法
- 【實驗目的】
- 【實驗環境】
- 【實驗預備知識點】
- 【實驗內容】
- 【實驗步驟】
- 【實驗思考題】
【實驗目的】
1、理解Hash函數的計算原理和特點
2、理解SM3算法原理
3、了解SM3值的生成過程
【實驗環境】
用戶A需要生成一段消息的SM3值,準備依據這個散列值對消息進行進一步的處理。
完成本實驗需要使用密碼學教學軟件,在D:\Release\bin目錄下打開Crypto軟件。
【實驗預備知識點】
SM3算法是密碼雜湊算法,適用于商用密碼應用中的數字簽名和驗證、消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。
對長度為l(l< 2^64) 比特的消息m,SM3雜湊算法經過填充和迭代壓縮,生成雜湊值,雜湊值長度為256比特。具體過程請見SM3標準描述。
【實驗內容】
SM3算法是國家密碼管理局2010年12月頒布的密碼雜湊算法,適用于商用密碼應用中的數字簽名和驗證、消息認證碼的生成與驗證以及隨機數的生成。
SM3算法對于長度小于264位的消息,產生一個256位的消息摘要。
算法以512位分組來處理輸入的信息,每一分組又被劃分為132個32位子分組,經過一系列的處理后,算法的輸出由八個32位分組組成,將這些32位分組級聯后產生一個256位的散列值。
【實驗步驟】
(1). 輸入消息
(2). 點擊生成按鈕
(3). 觀察明文填充塊,觀察生成的散列值
(4). 點擊64步運算按鈕,觀察SM3運算的各個步驟
(5). 對輸入消息做細微修改
(6). 重復(2),(3),(4)
(7). 比較散列值前后的變化情況
操作說明
本演示實驗以一個分組(512位)的散列計算為例,考慮到填充的信息長度,用戶輸入的長度不超過55個字節,超過部分系統會自動截斷。
(1)進入SM3演示程序
點擊教學軟件中的SM算法的SM3算法。
(2) 輸入待散列的明文
(3) 生成散列值
點擊生成,系統首先顯示填充后的512位子明文分組,然后依據算法產生相應的子明文分組擴充,最后顯示生成的SHA1散列值。
圖 1生成散列值
(4)詳細計算流程
點擊64步運算按鈕,系統顯示對明文數據進行運算的80步操作細節。
圖 2詳細計算流程
點擊步驟,可以依序得到每步的計算結果
圖 3得到每步計算結果
【實驗思考題】
1、 SM3的基本處理塊大小如何?
(1) 算法的本質
給數據加一個固定長度的指紋,這個固定長度就是256比特。
(2) 處理過程
第一步:填充,使填充后的數據的長度是512的整數倍
先在數據的最尾巴上加一個1;然后把原始數據的長度用64比特表示,放在最后面;再看看現在的數據的長度值離512的整數還差多少個,差多少個就填多少個0在加的這個1和64比特的長度之間。
(3) 分組
把填充后的信息按照512比特一個分組進行分組,如果分成了N組,就是b(0),b(1),b(N-1)
第三步:迭代壓縮得到最后的雜湊值(哈希值)
IV(n)=CF(IV(n-1),b(n-1))
如果信息分為N組,那么IV(N)就是最后得到的雜湊值。
2、 SM3與MD5,SHA1的散列值的大小分別是多少?
(1) SM3算法對于長度小于264位的消息,產生一個256位的消息摘要。算法以512位分組來處理輸入的信息,每一分組又被劃分為132個32位子分組,經過一系列的處理后,算法的輸出由八個32位分組組成,將這些32位分組級聯后產生一個256位的散列值。
(2) MD5(RFC 1321)是 Rivest 于1991年對MD4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 MD4 相同。MD5比MD4來得復雜,并且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好。
(3) SHA1是由NIST NSA設計為同DSA一起使用的,它對長度小于264的輸入,產生長度為160bit的散列值,因此抗窮舉(brute-force)性更好。SHA-1 設計時基于和MD4相同原理,并且模仿了該算法。
總結
- 上一篇: 游戏开发需要懂几种语言?
- 下一篇: 可视化在线编辑器架构设计