SM4.0

SM4.0

SM4.0(原名SMS4.0)是中華人民共和國政府採用的一種分組密碼標準,由國家密碼管理局於2012年3月21日發布。相關標準為“GM/T 0002-2012《SM4分組密碼演演算法》(原SMS4分組密碼演演算法)”。

介紹


在商用密碼體系中,SM4主要用於數據加密,其演演算法公開,分組長度與密鑰長度均為128bit,加密演演算法與密鑰擴展演演算法都採用32輪非線性迭代結構,S盒為固定的8比特輸入8比特輸出。
SM4.0中的指令長度被提升到大於64K(即64×1024)的水平,這是SM 3.0規格(渲染指令長度允許大於512)的128倍。

相關概念


在密碼學中,分組加密(英語:Block cipher),又稱分塊加密或塊密碼,是一種對稱密鑰演演算法。它將明文分成多個等長的模塊(block),使用確定的演演算法和對稱密鑰對每組分別加密解密。分組加密是極其重要的加密協議組成,其中典型的如DES和AES作為美國政府核定的標準加密演演算法,應用領域從電子郵件加密到銀行交易轉帳,非常廣泛。
國密即國家密碼局認定的國產密碼演演算法。主要有SM1SM2SM3,SM4。密鑰長度和分組長度均為128位。
SM1為對稱加密。其加密強度與AES相當。該演演算法不公開,調用該演演算法時,需要通過加密晶元的介面進行調用。
SM2為非對稱加密,基於ECC。該演演算法已公開。由於該演演算法基於ECC,故其簽名速度與秘鑰生成速度都快於RSA。ECC 256位(SM2採用的就是ECC 256位的一種)安全強度比RSA 2048位高,但運算速度快於RSA。
SM3消息摘要。可以用MD5作為對比理解。該演演算法已公開。校驗結果為256位。
SM4無線區域網標準的分組數據演演算法。對稱加密,密鑰長度和分組長度均為128位。

源代碼


Python

SM4的Python實現

Java

SM4的Java實現