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

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