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

最新文章

  1. RESTful API 设计最佳实践
  2. linux定时执行任务crontab命令用法
  3. salesforce 零基础学习(三十)工具篇:Debug Log小工具
  4. Android应用开发基础之十一:新特性
  5. java jdbc 连接mysql数据库 实现增删改查
  6. Java 关键字static final使用总结
  7. DHCP工作过程
  8. easyui datagrid 增删改查示例
  9. HttpWebRequest访问时,错误:(401)未经授权。
  10. JAXB - Annotations, The Object Factory: XmlRegistry, XmlElementDecl
  11. Innobackupex全备恢复(原理、演示)
  12. Scheme call/cc 研究
  13. android放大镜效果实现
  14. oracle连表语法
  15. MATLAB plot()、scatter()的RGB颜色设置以及生成渐变色
  16. Chromium源码--网络请求流程分析
  17. IntelIJ IDEA配置Tomcat遇到问题Error during artifact deployment. See server log for details
  18. 玩转TypeScript(3)--数组
  19. 正确的C++/C堆栈
  20. 第14讲:嵌入式SQL语言(基本技巧)

热门文章

  1. 【leetcode】280.Wiggle Sort
  2. HDU-1237- 简单计算器--栈的基本应用
  3. P2921 [USACO08DEC]在农场万圣节[SCC缩点]
  4. 除了不要 SELECT * ,程序员使用数据库还应知道的11个技巧
  5. ask confirm shell
  6. mongoose 5.0 链接数据库 代码保存
  7. IntelliJ IDEA使用教程一 介绍&安装&配置
  8. 使用jQuery快速高效制作网页交互特效---表单校验
  9. k8s aliyun mirros
  10. MongoDB 分片键分类与数据分发