zoukankan      html  css  js  c++  java
  • 基于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('完成加解密!')
  • 相关阅读:
    (1)一步一步开发一个简单二维CAD之基本框架
    weekly review 200844: Lazy
    《理解专业程序员》读书笔记
    weekly review 200843: House M.D.
    weekly review 200846: table tennis
    weekly review 200845: Work Hard Not Enough
    Change Your Mind and Your Life Will Follow
    weekly review 200847: tdd
    爱心·王搏计划“走出地震”影展需要志愿者(11月24日——11月26日)
    read_notes
  • 原文地址:https://www.cnblogs.com/IconicV/p/10854168.html
Copyright © 2011-2022 走看看