• 基于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'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00' #  bytes类型
    crypt_sm4 = CryptSM4()
    
    
    crypt_sm4.set_key(key, SM4_ENCRYPT)
    encrypt_value = crypt_sm4.crypt_ecb(value) #  bytes类型
    print('加密成功!')
    print('加密结果为:
    ', encrypt_value)
    print('
    ')
    crypt_sm4.set_key(key, SM4_DECRYPT)
    decrypt_value = crypt_sm4.crypt_ecb(encrypt_value) #  bytes类型
    print('解密成功!
    解密结果为:', decrypt_value)
    print('
    ')
    assert value == decrypt_value
    print('decrypt_value==value?',value == decrypt_value)
    print('完成加解密!')
  • 相关阅读:
    Gradle更小、更快构建APP的奇淫技巧
    一篇文章让你了解Android各个版本的历程
    快速开发android,离不开这10个优秀的开源项目
    .net 使用AjaxControlToolkit.dll 遇到的"Sys"未定义问题
    ajax xmlhttp下open方法POST、GET参数的区别
    ArrayList 类和List<T>泛型类
    LINQ to SQL
    StudioStyle 使用 厌倦了默认的Visutal Studio样式了,到这里找一个酷的试试
    C#中byte[]与string的转换
    c#中的interface abstract与virtual
  • 原文地址:https://www.cnblogs.com/IconicV/p/10854168.html
Copyright © 2020-2023  润新知