1、國產密碼算法介紹html
國產密碼算法(國密算法)是指國家密碼局認定的國產商用密碼算法,在金融領域目前主要使用公開的SM二、SM三、SM4三類算法,分別是非對稱算法、哈希算法和對稱算法。python
1.SM2算法:SM2橢圓曲線公鑰密碼算法是我國自主設計的公鑰密碼算法,包括SM2-1橢圓曲線數字簽名算法,SM2-2橢圓曲線密鑰交換協議,SM2-3橢圓曲線公鑰加密算法,分別用於實現數字簽名密鑰協商和數據加密等功能。SM2算法與RSA算法不一樣的是,SM2算法是基於橢圓曲線上點羣離散對數難題,相對於RSA算法,256位的SM2密碼強度已經比2048位的RSA密碼強度要高。算法
橢圓曲線參數並無給出推薦的曲線,曲線參數的產生須要利用必定的算法產生。但在實際使用中,國密局推薦使用素數域256 位橢圓曲線,其曲線方程爲y^2= x^3+ax+b(其中p是大於3的一個大素數,n是基點G的階,Gx、Gy 分別是基點G的x與y值,a、b是隨圓曲線方程y^2= x^3+ax+b的係數)。安全
2.SM3算法:SM3雜湊算法是我國自主設計的密碼雜湊算法,適用於商用密碼應用中的數字簽名和驗證消息認證碼的生成與驗證以及隨機數的生成,可知足多種密碼應用的安全需求。爲了保證雜湊算法的安全性,其產生的雜湊值的長度不該過短,例如MD5輸出128比特雜湊值,輸出長度過短,影響其安全性SHA-1算法的輸出長度爲160比特,SM3算法的輸出長度爲256比特,所以SM3算法的安全性要高於MD5算法和SHA-1算法。網絡
3.SM4算法:SM4分組密碼算法是我國自主設計的分組對稱密碼算法,用於實現數據的加密/解密運算,以保證數據和信息的機密性。要保證一個對稱密碼算法的安全性的基本條件是其具有足夠的密鑰長度,SM4算法與AES算法具備相同的密鑰長度分組長度128比特,所以在安全性上高於3DES算法。SM4算法支持的四種加密模式以下表所示:測試
SM4 分組算法4種模式及安全MAC的算法標識:加密
2、python實現設計
1.SM2測試截圖code
python3實現的國密SM2+SM3,SM3包括KDF功能,可配合SM2加解密(SM2調用了SM3模塊)。SM2實現了各類素域下的簽名、驗籤和加解密功能。htm
SM2對「袁琳」的加解密過程:
2.SM3測試截圖
python編寫的SM3密碼雜湊算法代碼。
對字符串yl進行測試:
結果如圖:
3.SM4測試截圖
python實現的國產加密sm4算法。
3、遇到的問題與解決過程
1.版本問題
緣由:Missing parentheses in call to 'print'是由於Python2.X和Python3.X不兼容。
2.python模塊以及導入出現ImportError: No module named ‘xxx‘問題