《基於Python的GMSSL實現》課程設計個人報告


《基於Python的GMSSL實現》課程設計個人報告

一、基本信息

姓名:LJF

學號:20165234

題目:GMSSL基於python的實現

指導老師:LJP

完成時間:2019年5月6日---2019年5月26日

驗收時間:2019年5月27日

小組成員:YJT,TX,LJF

二、個人貢獻

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以實現相應的功能。
從前兩周的探索到最終成功,從學習基本語言到深入理解算法再到最終實現自己負責的板塊,收獲很大,同時也要感謝老師和隊友整個過程的幫助!

七、課程設計參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM