基於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('完成加解密!')