基於Python的GMSSL實現


基於Python的GMSSL實現

團隊任務

一、小組討論對課程設計任務的理解

基於Python的GMSSL實現,即GmSSL開源加密包的python實現,支持其SM2/SM3/SM4等國密(國家商用密碼)算法。

在和老師討論以后,我們決定先分別跑通SM2/SM3/SM4算法,最后實現一個客戶端/服務器之間安全通信的程序。

二、進行任務的功能划分和分工

SM2:YJT

SM3:TX

SM4:LJF

安全通信的程序最后大家一起討論實現。

三、任務的進度安排

第一周:熟悉Python語言,理解並熟悉三種國密算法。

第二周:分別實現三種算法。

第三周:實現客戶端/服務器之間的安全通信程序,驗收。

第四周:根據老師提出要求修改完善,撰寫報告。

碼雲鏈接

https://gitee.com/GMSSLbyPython

實踐過程

搭建環境

使用Vscode,運用Python實現SM4:

目前出現了 indexerror: list index out of range 的錯誤,經過查詢得知可能 list[index] index超出范圍,也就是常說的數組越界。

嘗試了很多辦法也沒有解決...

 

在找過指導老師后,我發現我們理解錯誤了

其實只要配置好gmssl,並在Python中實現調用,就可以輕松地搞定啦...

而且整個過程只需要20行代碼,而不是用200多行Python代碼去實現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('完成加解密!')

 


免責聲明!

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



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