snowland-smx密码算法库

一、snowland-smx密码算法库的介绍

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

引用于:https://zhuanlan.zhihu.com/p/347417866

二、snowland-smx的安装

pip install snowland-smx

三、snowland-smx的使用

在使用前,我们首先需要输入python3,进入python环境

1 sm2签名验签,加密解密

密钥生成

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

签名

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

验签

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

加密

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

解密

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

2 sm3

国密哈希

a. 方法1:

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

b. 方法2:

from pysmx.SM3 import hash_msg
s = '20201307lcy'
hash_msg(s)

正确性验证:

3 sm4

国密私钥加解密

a. 加密

from pysmx.SM4 import Sm4, ENCRYPT, DECRYPT
key_data = b'1111222233334444' # 至少16字节
sm4 = Sm4()
input_data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
sm4.sm4_set_key(key_data, ENCRYPT)
msg = sm4.sm4_crypt_ecb(input_data)

这里发生了报错

Traceback (most recent call last):

File "", line 1, in

TypeError: sm4_crypt_ecb() missing 1 required positional argument: 'input_data'

我们可以初步推断是没有传入input_data的原因,同时,我们去对应工程下的sm4.py看一下

发现input确实是需要大于16位,且需要是数组格式,故改成input_data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

b. 解密

from pysmx.SM4 import Sm4, ENCRYPT, DECRYPT
key_data = b'1111222233334444' # 至少16字节
sm4 = Sm4()
sm4.sm4_set_key(key_data, DECRYPT)
sm4.sm4_crypt_ecb(msg)

四、反思与问题总结

pysmx库的调试属于比较简单的一类调试,代码量少,而且均在命令行中操作。对于本次pysmx库的调试,在本组中我不是最先完成的,但我也在本次安装的过程中收获很多,就比如使用pip安装的过程中,我与组员的安装命令不一样,但事实上是在我的环境下无法运行他的命令,反而用自己的命令也能够达到要求,说明我们要在学习的过程中培养解决问题的能力。

参考链接:

https://gitee.com/snowlandltd/snowland-smx-python

https://blog.csdn.net/qsmy_an/article/details/117446575

snowland-smx密码算法库的更多相关文章

  1. OpenSSL密码算法库: MD5示例小程序

    OpenSSL http://www.openssl.org/ OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL 的密码算法库包含多种加密算 ...

  2. liboqs-量子安全密码算法开源C库

    liboqs是一个用于量子安全密码算法的开源C库. 一,概述 liboqs提供: 量子安全 密钥封装机制(KEM)和数字签名算法的开源实现的集合: 这些算法的通用API: 测试工具和基准测试例程. l ...

  3. Android逆向之旅---Android中锁屏密码算法解析以及破解方案

    一.前言 最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机 ...

  4. Java实现7种常见密码算法

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 前面在密码学入门一文中讲解了各种常见的密码学概念.算法与运用场景,但没有介绍过代码,因此,为作补充,这一篇将会介绍 ...

  5. 信息安全-2:python之hill密码算法[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做, ...

  6. 安装Python算法库

    安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...

  7. scikit-learn 支持向量机算法库使用小结

    之前通过一个系列对支持向量机(以下简称SVM)算法的原理做了一个总结,本文从实践的角度对scikit-learn SVM算法库的使用做一个小结.scikit-learn SVM算法库封装了libsvm ...

  8. scikit-learn 线性回归算法库小结

    scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的不同和各自的使用场景. 线性回归的目的是要得到输 ...

  9. 算法库:Matlab与C++混合编程

    算法库:Matlab与C++混合编程 最近做光流算法预演过程中,下载的源码中涉及到了Matlab和C++的混合编程.在同事Matlab2014的环境下,程序到是一下就运行通过了.但在我这Matlab2 ...

  10. 使用CPA4破解经典密码算法

    下面是一段经过经典密码算法加密的密文(加密算法未知): yvvnerujjvnywhbdvkpchfgvjtzwqsuporqfzpoekkjgziicdwwkeejdsruef   whwseyej ...

随机推荐

  1. ATM购物车

    ATM项目实现思路: ATM架构设计 三层架构 core目录下的src.py(浏览器) (展示层) interface目录下的多个py文件(框架) (核心逻辑层) db目录下db_handler.py ...

  2. Django项目启动 AttributeError: ‘str‘ object has no attribute ‘decode‘ 问题

    Watching for file changes with StatReloader Performing system checks... System check identified no i ...

  3. ArcObjects SDK开发 024开发的技术和技巧

    1.基本技术 开发方面.会使用C#开发语言和Visual Studio开发工具.会使用WinForm或者WPF开发. 理论知识方面.了解GIS的相关概念,例如矢量数据,栅格数据,空间参考.比例尺等概念 ...

  4. 2020强网杯青少赛Pursuing_The_Wind战队WRITEUP

    在线文档:https://docs.qq.com/doc/DZkN0RFFaR1ZDdHhD    旧事拾荒,偶遇该文档,既发. 战队信息 战队名称:Pursuing_The_Wind 战队排名:12 ...

  5. Python 文件操作(IO 技术)

    目录 Python 文件操作(IO 技术) 文本文件和二进制文件 文件操作相关模块概述 建文件对象 open() 文本文件的写入 write()/writelines()写入数据 close()关闭文 ...

  6. MasaFramework -- i18n (国际化)

    概念 作为一个普通开发者, 我们负责的项目的使用群体大多数是本国的人民, 但不可避免的也有一些做外贸的业务或者给外企做的项目, 这个时候就要求我们的项目有服务全球客户的能力, 而一个支持国际化能力的框 ...

  7. 1_ios系统httpstatus状态为0

    这两天在开发中遇到了一个很奇怪的问题,我有一个上传文件的接口,在安卓系统运行完全没问题,但是一使用苹果系统运行就报错,看了下控制台和Network,发现HTTPStatus的状态为0 从来没见过状态返 ...

  8. Git操作不规范,战友提刀来相见!

    年终奖都没了,还要扣我绩效,门都没有,哈哈. 这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家. 文末留言,聊聊你的年终奖. 问题描述 小A和我在同时开发一个功能模 ...

  9. 代码小DEMO随笔---不经过后端接口,JS上传文件读取文件,展示到页面提供下载功能

    如果文件不大的话,我们可以不经过后端的接口,直接进行文件保存与展示下载~~ 目前,IE8.Firfox.Chrome.Opera浏览器都支持这种小文件嵌入. 好处:节省了一个HTTP 请求. 坏处:就 ...

  10. 华为云发布冷启动加速解决方案:助力Serverless计算速度提升90%+

    摘要:本文介绍了华为云对冷启动优化这一业界难题的探索之路,创新提出了基于进程级快照的优化方案. 作者信息-- 子游:华为元戎高级工程师 平山:华为云中间件 Serverless 负责人 琪君:华为元戎 ...