國密SM3雜湊演算法與實現

來源:互聯網
上載者:User

國密辦已於去年公布國產商密演算法SM3,http://www.oscca.gov.cn/News/201012/News_1199.htm,這給其應用和開發帶來了方便,也見網上有許多實現的例子,出於一個項目開發需要,也試試其實現。

       實現思路:完全從頭來寫不太適合如今開發時代,尤其是開原始碼的大量使用。密碼演算法實現比較有名的就是:openssl,其體系龐大,使用也方便。但從學習與研究上來看,還是需要實現一個簡化的代碼,要小,適用於移植與嵌入。那就看看有沒有更簡潔的原始碼庫。在網上搜尋一下,還找到個比較好的演算法庫,也不大,就是:Xyssl,好像是個法國人開發,管他是誰好用就行。

       Xyssl實現了常用雜湊演算法MD2,MD4,MD5,SHA1,SHA2,SHA4等,並且代碼簡潔,適用於擴充,瞭解其實現機制外,那就看看我們的SM3演算法吧。

       SM3演算法結果為256位,其大體上與SHA256相同,其演算法過程如下:

       1、填充

       SM3對訊息長度小於為2^64位進行運算,其填充方法與SHA256的相同,假設訊息m 的長度為l 位元。首先將位元“1”添加到訊息的末尾,再添加k 個“0”,k是滿足l + 1 + k = 448mod512 的最小的非負整數。然後再添加一個64位位元串,該位元串是長度l的二進位表示。填充後的訊息m′ 的位元長度為512的倍數。

        2、迭代壓縮

        這個過程與其他HASH演算法類似,先進行訊息擴充,之後迭代與壓縮,其詳細過程可參考標準文檔。其擴充與壓縮計算以迴圈移位為主,並有異或計算。

        在演算法開發中碰到一個很有趣的事:使用VC6進行開發,在訊息擴充使用,計算式比較長:

        W[j] = P1( W[j-16] ^ W[j-9] ^ ROTL(W[j-3],15)) ^ ROTL(W[j - 13],7 ) ^ W[j-6];
        

         其運行結果為:VC6的debug版運行與標準說明的相同,而release版結果不同,變化很大,據分析可能原因是:VC6的編譯最佳化上可能有些不夠造成的,而用VC++2008  就不會出現debug和release計算結果不同的現象。

        後來將這複雜算式改為多步計算,問題就沒了,哈哈,管他呢,解決問題是硬道理啊。

        填充的訊息經擴充後在進行64輪迭代,最後就算出雜湊結果。

  SS1 = ROTL((ROTL(A,12) + E + ROTL(T[j],j)), 7);
  SS2 = SS1 ^ ROTL(A,12);
  TT1 = FF0(A,B,C) + D + SS2 + W1[j];
  TT2 = GG0(E,F,G) + H + SS1 + W[j];
  D = C;
  C = ROTL(B,9);
  B = A;
  A = TT1;
  H = G;
  G = ROTL(F,19);
  F = E;
  E = P0(TT2);

      程式運行結果與標準文檔的測試資料比較完全一致,證明實現正確。

      為了便於大家學習請到  http://download.csdn.net/detail/goldboar/3751538 下載,使用VC6開發,全部工程代碼,並附帶有SM3-HMAC演算法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.