基于Python的GMSSL实现
2024-09-01 13:02:47
基于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'' # 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('完成加解密!')
最新文章
- RESTful API 设计最佳实践
- linux定时执行任务crontab命令用法
- salesforce 零基础学习(三十)工具篇:Debug Log小工具
- Android应用开发基础之十一:新特性
- java jdbc 连接mysql数据库 实现增删改查
- Java 关键字static final使用总结
- DHCP工作过程
- easyui datagrid 增删改查示例
- HttpWebRequest访问时,错误:(401)未经授权。
- JAXB - Annotations, The Object Factory: XmlRegistry, XmlElementDecl
- Innobackupex全备恢复(原理、演示)
- Scheme call/cc 研究
- android放大镜效果实现
- oracle连表语法
- MATLAB plot()、scatter()的RGB颜色设置以及生成渐变色
- Chromium源码--网络请求流程分析
- IntelIJ IDEA配置Tomcat遇到问题Error during artifact deployment. See server log for details
- 玩转TypeScript(3)--数组
- 正确的C++/C堆栈
- 第14讲:嵌入式SQL语言(基本技巧)
热门文章
- 【leetcode】280.Wiggle Sort
- HDU-1237- 简单计算器--栈的基本应用
- P2921 [USACO08DEC]在农场万圣节[SCC缩点]
- 除了不要 SELECT * ,程序员使用数据库还应知道的11个技巧
- ask confirm shell
- mongoose 5.0 链接数据库 代码保存
- IntelliJ IDEA使用教程一 介绍&;安装&;配置
- 使用jQuery快速高效制作网页交互特效---表单校验
- k8s aliyun mirros
- MongoDB 分片键分类与数据分发