介紹
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作為美國政府核定的標準加密算法,套用領域從電子郵件加密到銀行交易轉帳,非常廣泛。
國密即國家密碼局認定的國產密碼算法。主要有SM1,SM2,SM3,SM4。密鑰長度和分組長度均為128位。
SM1為對稱加密。其加密強度與AES相當。該算法不公開,調用該算法時,需要通過加密晶片的接口進行調用。
SM2為非對稱加密,基於ECC。該算法已公開。由於該算法基於ECC,故其簽名速度與秘鑰生成速度都快於RSA。ECC 256位(SM2採用的就是ECC 256位的一種)安全強度比RSA 2048位高,但運算速度快於RSA。
SM3訊息摘要。可以用MD5作為對比理解。該算法已公開。校驗結果為256位。
SM4無線區域網路標準的分組數據算法。對稱加密,密鑰長度和分組長度均為128位。
原始碼
C/C++
Python
SM4的Python實現
Java
SM4的Java實現