gmssl-python 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
gmssl-python 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
gmssl-python 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
gmssl-python 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
gmssl-python 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 BSD
开发语言 Python 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
提 交 者 段洪义
适用人群 未知
收录时间 2018-07-30

软件简介

GMSSL

GmSSL是一个开源的加密包的python实现,支持SM2/SM3/SM4等国密(国家商用密码)算法、项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。

安装

pip install gmssl

SM2算法

RSA算法的危机在于其存在亚指数算法,对ECC算法而言一般没有亚指数攻击算法 SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较其他公钥算法所需密钥长度小很多。

gmssl是包含国密SM2算法的Python实现, 提供了 encrypt、 decrypt等函数用于加密解密, 用法如下:

1. 初始化CryptSM2

import base64
import binascii
from gmssl import sm2, func
#16进制的公钥和私钥
private_key = '00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D5'
public_key = 'B9C9A6E04E9C91F7BA880429273747D7EF5DDEB0BB2FF6317EB00BEF331A83081A6994B8993F3F5D6EADDDB81872266C87C018FB4162F5AF347B483E24620207'
sm2_crypt = sm2.CryptSM2(
    public_key=public_key, private_key=private_key)

2. encryptdecrypt

#数据和加密后数据为bytes类型
data = b"111"
enc_data = sm2_crypt.encrypt(data)
dec_data =sm2_crypt.decrypt(enc_data)
assert dec_data == data

3. signverify

data = b"111" # bytes类型
random_hex_str = func.random_hex(sm2_crypt.para_len)
sign = sm2_crypt.sign(data, random_hex_str) #  16进制
assert sm2_crypt.verify(sign, data) #  16进制

SM4算法

国密SM4(无线局域网SMS4)算法, 一个分组算法, 分组长度为128bit, 密钥长度为128bit, 算法具体内容参照SM4算法

gmssl是包含国密SM4算法的Python实现, 提供了 encrypt_ecb、 decrypt_ecb、 encrypt_cbc、 decrypt_cbc等函数用于加密解密, 用法如下:

1. 初始化CryptSM4

from gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPT

key = b'3l5butlj26hvv313'
value = b'111' #  bytes类型
iv = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' #  bytes类型
crypt_sm4 = CryptSM4()

2. encrypt_ecbdecrypt_ecb

crypt_sm4.set_key(key, SM4_ENCRYPT)
encrypt_value = crypt_sm4.crypt_ecb(value) #  bytes类型
crypt_sm4.set_key(key, SM4_DECRYPT)
decrypt_value = crypt_sm4.crypt_ecb(encrypt_value) #  bytes类型
assert value == decrypt_value

3. encrypt_cbcdecrypt_cbc

crypt_sm4.set_key(key, SM4_ENCRYPT)
encrypt_value = crypt_sm4.crypt_cbc(iv , value) #  bytes类型
crypt_sm4.set_key(key, SM4_DECRYPT)
decrypt_value = crypt_sm4.crypt_cbc(iv , encrypt_value) #  bytes类型
assert value == decrypt_value
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2019/05/12 22:57

基于Python的GMSSL实现

基于Python的GMSSL实现 团队任务 一、小组讨论对课程设计任务的理解 基于Python的GMSSL实现,即GmSSL开源加密包的python实现,支持其SM2/SM3/SM4等国密(国家商用密码)算法。 在和老师讨论以后,我们决定先分别跑通SM2/SM3/SM4算法,最后实现一个客户端/服务器之间安全通信的程序。 二、进行任务的功能划分和分工 SM2:杨靖涛 SM3:谭笑 SM4:刘津甫 安全通信的程序最后大家一起讨论实现。 三、任务的进度安排 第一周:熟悉Pytho...

0
0
发表了博客
2019/12/19 11:21

GmSSL Build with VS2017

使用背景: 最近研究GB35114, 有关于sip协议部分,exosip的已经编译过,由于gb3511中采用的是国密算法,因此这里记录一下GMSSL在windows下的编译过程以及遇到的错误 详细GMSSL的介绍见:http://gmssl.org/ 根据文档说明,步骤如下: 在Window下的编译和安装 安装ActivePerl和Visual Studio,以管理员身份打开Visual Studio Tools下的Developer Command Prompt控制台并运行: perl Configure VC-WIN32 nmake nmake install 环境...

0
0
2020/06/15 22:15

Mac 编译 Gmssl 过程

Gmssl 在mac上编译会碰到类似This system (darwin64-x86_64-cc) is not supported. See file INSTALL for details.这样的提示。解决办法: 1、修改Configure、test/build.info、test/run_tests.pl中的 use if $^O ne "VMS", 'File::Glob' => qw/glob/; 变为 use if $^O ne "VMS", 'File::Glob' => qw/:glob/; make 过程会发现无法通过rate_test测试,修改test/sm9test.c中的 #if SM9_TEST   if (!rate_test()) {     prin...

0
0
发表于程序人生专区
2020/12/10 20:32

GmSSL快速上手指南

## 一、快速上手 1. 下载源代码 我是下载到本地然后通过 Xftp 传到 Linux 环境里的。 然后解压至当前目录: ```shell $ unzip GmSSL-master.zip ``` 2. 编译与安装 Linux平台使用以下命令: ```shell $ ./config $ make $ sudo make install ``` 安装完后查看版本: ```shell $ gmssl version ``` 报错:gmssl: symbol lookup error: gmssl: undefined symbol: PBEPARAM_it, version OPENSSL_1_1_0d 经过上网查找资料(见参考二...

0
0
发表了博客
2019/05/13 15:25

GmSSL安装过程中出现的问题

GmSSL安装过程中出现的问题 在安装GmSSL的时候出现了很多的问题,为了解决这些问题也是花费了大量的时间,甚至还重新装了一次虚拟机。在解决问题的过程中向很多同学进行求助,但是他们都没有碰到和我类似的问题,因此只能自己一点点的尝试,花费了很长时间,直到上周六才弄好。后来我发现很多同学都和我有相同的问题(这里很想哭,为什么我之前求助的同学都没有遇到和我相同的问题~~~ )在这里补上一一篇博客吧,帮助那些还没有...

0
0
发表了博客
2020/02/05 16:33

gmssl生成国密证书

环境准备: 1. GMSSL可以执行程序   如果木有,自行前往下载 http://gmssl.org/   编译可以参考前篇 编译https://www.cnblogs.com/leehm/p/12066683.html    2. openssl.cnf ------openssl自带 # # OpenSSL example configuration file. # This is mostly being used for generation of certificate requests. # # This definition stops the following lines choking if HOME isn't # defined. HOME = . RA...

0
0
发表了博客
2018/05/03 15:11

Windows下gmssl使用记录

使用gmssl进行计算sm4,编译的版本是gmssl2.0,2.1版本编译不过去 第一步下载软件,下载Visual Studio 2010旗舰版、nasm-2.13.03-installer-x86、ActivePerl-5.22.4.2205-MSWin32-x86-64int-403863这三个软件, 注意vs版本不能太低,否则便宜的时候容易出现错误。 第二部使用命令进行编译,生成lib库和dll库,请选择好生成的版本,32位或者64位的dll库 perl Configure VC-WIN32 nmake nmake install 第三步:在vs2010中调用该接...

0
0
发表了博客
2019/05/26 22:17

《基于Python的GMSSL实现》课程设计个人报告

《基于Python的GMSSL实现》课程设计个人报告 一、基本信息 姓名:刘津甫 学号:20165234 题目:GMSSL基于python的实现 指导老师:娄嘉鹏 完成时间:2019年5月6日---2019年5月26日 验收时间:2019年5月27日 小组成员:杨靖涛,谭笑,刘津甫 二、个人贡献 1. 收集相关资料并分享(相关博客、Python教程等) 2. 学习并搭建实验所需环境 3. 实现sm4算法的加解密 三、任务内容 1. 用Python语句调用gmssl以实现sm4 2. 实现用gmssl加密...

0
0
发表了博客
2020/05/09 12:16

基于Gmssl的SM2加解密算法Demo

基于Gmssl的SM2加解密算法Demo 存储小咖 2018-12-28 18:38:11 4739 收藏 5 展开 GmSSL介绍 Gmssl介绍:http://gmssl.org/ 当然本文也是参考 http://gmssl.org/ 其中SM2为非对称算法 SM2密钥生成 pair<string, string> GenKey(void) { EC_KEY *keypair = NULL; EC_GROUP *group1 = NULL; keypair = EC_KEY_new(); if(!keypair) { cout << "Failed to Gen Key" << endl; exit(1); } group1 = EC_GROUP_new_by_curve_name(NID_sm2p...

0
0
发表于运维专区
2020/12/16 10:58

GmSSL 与 OpenSSL 共存的安装方法

## 安装 OpenSSL 安装 `OpenSSL` 按照基本的安装方法(`yum、apt` 等)安装就好了,网上也有很多高版本的安装方法,这里就不做探讨了,一搜一大把 --- ## 安装 GmSSL > 要点就在于 `no-shared` :只编译静态库 ### 下载解压 ```bash # 下载 gmssl wget https://github.com/guanzhi/GmSSL/archive/master.zip # 解压 unzip master.zip ``` ### 编译 ```bash cd GmSSL-master # --prefix 指定 gmssl 的安装路径 # --openssldir 表...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
22 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部