基于Python的GMSSL实现
团队任务
一、小组讨论对课程设计任务的理解
基于Python的GMSSL实现,即GmSSL开源加密包的python实现,支持其SM2/SM3/SM4等国密(国家商用密码)算法。
在和老师讨论以后,我们决定先分别跑通SM2/SM3/SM4算法,最后实现一个客户端/服务器之间安全通信的程序。
二、进行任务的功能划分和分工
SM2:杨靖涛
SM3:谭笑
SM4:刘津甫
安全通信的程序最后大家一起讨论实现。
三、任务的进度安排
第一周:熟悉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('完成加解密!')