首页 > 其他分享 >课设第一周进展(snowland-smx)

课设第一周进展(snowland-smx)

时间:2022-11-16 22:24:32浏览次数:42  
标签:pysmx SM4 课设 smx snowland sm4 data

安装snowland-smx

snowland-smx简介

snowland-smx是python实现的国密套件,对标python实现的gmssl,包含国密SM2,SM3,SM4,SM9,ZUC等。其代码实现效率上优于gmssl,接口设计上也更加人性化,目前被snowland-djangohelper等项目使用。

snowland-smx的安装

使用pip指令进行安装

pip install snowland-smx==0.3.2a1

snowland-smx实现SM2

使用python3进入python环境

a. 密钥生成

from pysmx.SM2 import generate_keypair
pk, sk = generate_keypair()

b. 签名

from pysmx.SM2 import Sign
len_para = 64
sig = Sign("你好", sk, '12345678abcdef', len_para)

c. 验签

from pysmx.SM2 import Verify
len_para = 64
Verify(sig, "你好", pk, len_para)

d. 加密

from pysmx.SM2 import Encrypt
e = b'hello'
len_para = 64
C = Encrypt(e, pk, len_para, 0)  # 此处的1代表e是否是16进制字符串

e. 解密

from  pysmx.SM2 import Decrypt
len_para = 64
m = Decrypt(C, sk, len_para)

snowland-smx实现SM3

a. 方法一

from pysmx.SM3 import SM3
sm3 = SM3()
sm3.update('abc')
sm3.hexdigest()

b. 方法二

from pysmx.SM3 import hash_msg
s = 'abc'
hash_msg(s)

snowland-smx实现SM4

a. 加密

>>> from pysmx.SM4 import Sm4, ENCRYPT, DECRYPT
>>> key_data = b'20201325xjrxjrxjr'
>>> sm4 = Sm4()
>>> input_data = [1,2,3]
>>> sm4.sm4_set_key(key_data, ENCRYPT)
>>> msg = sm4.sm4_crypt_ecb()

按照网上资料我做到这个发现在执行msg = sm4.sm4_crypt_ecb()的时候发生了如下报错

File "<stdin>", line 1, in <module>
TypeError: sm4_crypt_ecb() missing 1 required positional argument: 'input_data'

我以为是没有传入传输input_data的原因,然后我将input_data数组放进去后:

发现报了一堆错误,这时候我们细看错误会发现 其错误原因是发生在路径为/usr/local/lib/python3.9/site-packages/pysmx/SM4/_SM4.py的SM4.py文件

File "/usr/local/lib/python3.9/site-packages/pysmx/SM4/_SM4.py", line 153, in sm4_crypt_ecb
    output_data = reduce(lambda a, b: a + b, map(lambda x: self.sm4_one_round(self.sk, x), tmp), [])

随后我才用cat指令查看这个文件

cat /usr/local/lib/python3.9/site-packages/pysmx/SM4/_SM4.py的SM4.py

可以看到input_data数组应该是至少为16位
我将input_data改为了
input_data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

然后再执行 msg = sm4.sm4_crypt_ecb(input_data)

就成功啦!

解密

  • 使用以下命令进行解密
>>> from pysmx.SM4 import Sm4, ENCRYPT, DECRYPT
>>> key_data = b'20201325xjrxjrxjr'
>>> sm4 = Sm4()
>>> sm4.sm4_set_key(key_data, DECRYPT)
>>> sm4.sm4_crypt_ecb(msg)

标签:pysmx,SM4,课设,smx,snowland,sm4,data
From: https://www.cnblogs.com/1314xhuan/p/16897756.html

相关文章

  • C++OOP课设
    C++OOP课设您的第一个任务是编写一个代码示例,该示例集成并演示了C++中OOP的以下方面:●通过使用多个类进行继承。这应该包括作为一个例子的多重继承,这在现实世界中并不一......
  • 学习计划【硬件课程设计】【课设】
    学习计划【硬件课程设计】【课设】​​前言​​​​学习计划【硬件课程设计】【课设】​​​​时间内容及工作安排​​​​一、基础实验(30分):​​​​二、自选试验(70分):​​​......
  • 学生小组设计自选实验【硬件课设】
    学生分组和选题【硬件课程设计】​​前言​​​​推荐​​​​学生小组设计自选实验​​​​1方案设计​​​​2系统原理图设计​​​​3系统仿真与仿真结果​​​​4PCB......
  • 图像课设Huffman编码
         它是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时......
  • 软件综合课设-课程设计指导网站
    沈阳航空航天大学  课程设计报告 课程设计名称:软件综合课程设计课程设计题目:课程设计指导网站设计与实现  学   院:计算机学院指导教师:安云哲学......
  • 组成原理课设-循环冗余校验码校验电路
    沈阳航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计课程设计题目:循环冗余校验码校验电路的               设计与......
  • WCF和ASMX Web服务之间有什么区别
    https://m.imooc.com/wenda/detail/586470https://www.cnblogs.com/xwc1996/p/9813728.html(我能看懂的一个wcf介绍)ASMXWeb服务只能由HTTP(带有.asmx的传统Web服务)调用......
  • (课设)C/S架构即时聊天软件开发(QT)
     (课设)C/S架构即时聊天软件开发源点工作室毕设,作业,论文,考试疑难解答,源码均有,看简介加我。 3人赞同了该文章一、引言项目概述项目目的:在已......