《基于Python的GMSSL實現》課程設計個人報告
一、基本信息
姓名 :劉津甫
學號 :20165234
題目 :GMSSL基于python的實現
指導老師 :婁嘉鵬
完成時間 :2019年5月6日---2019年5月26日
驗收時間 :2019年5月27日
小組成員 :楊靖濤,譚笑,劉津甫
二、個人貢獻
1. 收集相關資料并分享(相關博客、Python教程等)
2. 學習并搭建實驗所需環境
3. 實現sm4算法的加解密
三、任務內容
1.?用Python語句調用gmssl以實現sm4
2. 實現用gmssl加密通信的功能
四、實踐過程
(一)學習并熟悉Python
思維導圖如下:
?(二)上手SM4算法
國產密碼算法介紹
國產密碼算法(國密算法)是指國家密碼局認定的國產商用密碼算法,在金融領域目前主要使用公開的SM2、SM3、SM4三類算法,分別是非對稱算法、哈希算法和對稱算法。
SM2算法:SM2橢圓曲線公鑰密碼算法是我國自主設計的公鑰密碼算法,包括SM2-1橢圓曲線數字簽名算法,SM2-2橢圓曲線密鑰交換協議,SM2-3橢圓曲線公鑰加密算法,分別用于實現數字簽名密鑰協商和數據加密等功能。SM2算法與RSA算法不同的是,SM2算法是基于橢圓曲線上點群離散對數難題,相對于RSA算法,256位的SM2密碼強度已經比2048位的RSA密碼強度要高。
SM3算法:SM3雜湊算法是我國自主設計的密碼雜湊算法,適用于商用密碼應用中的數字簽名和驗證消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。為了保證雜湊算法的安全性,其產生的雜湊值的長度不應太短,例如MD5輸出128比特雜湊值,輸出長度太短,影響其安全性SHA-1算法的輸出長度為160比特,SM3算法的輸出長度為256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
SM4算法 :SM4分組密碼算法是我國自主設計的分組對稱密碼算法,用于實現數據的加密/解密運算,以保證數據和信息的機密性。要保證一個對稱密碼算法的安全性的基本條件是其具備足夠的密鑰長度,SM4算法與AES算法具有相同的密鑰長度分組長度128比特,因此在安全性上高于3DES算法。
完成SM4算法的代碼
from gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPT key = b ' 3l5butlj26hvv313 ' value = b ' 111 ' # bytes類型 iv = b ' \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 ' # bytes類型 crypt_sm4 = CryptSM4() crypt_sm4.set_key(key, SM4_ENCRYPT) encrypt_value = crypt_sm4.crypt_ecb(value) # bytes類型 print( ' 加密成功! ' ) print( ' 加密結果為:\n ' , encrypt_value) print( ' \n ' ) crypt_sm4.set_key(key, SM4_DECRYPT) decrypt_value = crypt_sm4.crypt_ecb(encrypt_value) # bytes類型 print( ' 解密成功!\n解密結果為: ' , decrypt_value) print( ' \n ' ) assert value == decrypt_value print( ' decrypt_value==value? ' ,value == decrypt_value) print( ' 完成加解密! ' )
五、實驗中遇到的問題
在安裝gmssl時遇到了如下問題:
由紅色報錯內容可猜測是權限問題
更換至管理員權限的命令行,成功解決:
六、設計體會及收獲
我負責的部分是實現sm4算法,中途和老師交流以后發現我們小組對題目理解有偏差,應該做的是用Python語句調用gmssl以實現相應的功能。
從前兩周的探索到最終成功,從學習基本語言到深入理解算法再到最終實現自己負責的板塊,收獲很大,同時也要感謝老師和隊友整個過程的幫助!
七、課程設計參考資料
-
通過git上傳本地代碼到碼云倉庫
-
git命令行的使用
-
國密算法概述
-
python開發環境的搭建
-
國密算法學習整理
-
關于國密算法 SM1,SM2,SM3,SM4 的筆記
-
GMSSL安裝與使用
- 國密工具箱
- pyOpenssl簡介
-
基于Python和GMSSL實現的SSL網絡通信
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
