gmssl-python

支持国密算法的 Python 加密包
授权协议 BSD
开发语言 Python
所属分类 程序开发、 加密/解密软件包
软件类型 开源软件
地区 国产
投 递 者 充高扬
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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
  • 1.1语言:python 1.2库:gmssl 2、过程 2.1 密钥生成 使用func.list_to_bytes函数编写随机密钥生成函数key_gen(无输入,输出bytes类型的随机SM4密钥),需要注意密钥的位数 2.2 iv生成 使用func.list_to_bytes函数编写随机iv生成函数iv_gen(无输入,输出bytes类型的随机SM4 iv),需要注意iv的位数 2.3 SM4

  • 1 gmssl 中sm9 测试源码: GmSSL/test/sm9test.c 其中包括了SM9流程中密钥产生,加解密,封装解封装和签名验签流程。 编译后运行。测试结果如下: gmssl$ GmSSL/test/sm9test sm9 sign tests passed sm9 exch tests passed sm9 key wrap tests passed sm9 encrypt tes

  • 我们继续来进行国密算法的演示。 本篇演示sm2非对称算法的实现,国密算法库gmssl的使用。 一 sm2算法的特点: sm2: 即椭圆曲线公钥密码算法,是由国家密码管理局发布的; 非对称加密算法,即有一对不一样的密钥:公钥和私钥,公钥用来加密,私钥用来解密; 公钥和私钥:公钥,可以公开。私钥:不对外公开; 同一个明文,同一个公钥,每次加密结果不相等; 密码复杂度高,更先进,更安全,性能更快; 用于

  • 编译安装python3.6的步骤 1.下载python3源码包 wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz 2.下载python3编译的依赖包 yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel

  •   由于工作原因,需要使用到国密加密算法,而且需要使用Python来做,于是就找来了Python中的gmssl库函数来进行使用。   在使用gmssl库的时候,可以使用在这个函数当中进行上面sm2自我签名与验签,但是其他工具产生的sm2签名无法通过该工具进行签名验证。在查找了GitHub之后,发现了问题所在,在对于sm2签名的时候,该函数是直接对于源数据进行签名,在算法的标准当中,签名是需要进行h

  • 参考文档:gmssl项目手册 本文主要记录的是:安装完成之后找无法调用gmssl命令的解决方法。 环境说明 操作系统:CentOS7.6 gmssl版本:GmSSL-v1 (本次没有尝试最新的GmSSL-master,在编译的时候出了一下问题,后续如果解决出来了补上) 编译安装 [root@test-gmssl ~]# wget https://github.com/guanzhi/GmSSL/a

  • OpenSSL简介_Cherosw的博客-CSDN博客_openssl OpenSSL 命令行 SM2 SM3操作 - 天行常 https://const.net.cn/c/OpenSSL/ openssl用法详解_踏着阳光的博客-CSDN博客_openssl OpenSSL 中文手册 | OpenSSL 中文网 gmssl: openssl gmssl SM2 公私钥生成 加密解密命令_剑兄的博

  • import base64 import binascii from Common.tools.gmssl import sm2, func # sm2的公私钥 已隐藏可直接填写贵公司开发给你的公私钥 SM2_PRIVATE_KEY = '*****************************' # 私钥 SM2_PUBLIC_KEY = '04*******************

  • sm2 python(gmssl) + vue(sm-crypto) + java(hutool) 互相加解密 vue # npm install --save sm-crypto import {sm2} from 'sm-crypto' const cipherMode = 1 const private_key = 'd9d37f4f46e8514c6f9398a984e74f3eead9

  • 安装Win7虚拟机,并用安全软件打好所有补丁 要不然下面安装的时候不一定哪步就崩。 安装Visual Studio 2015,主要是需要Vs中的两个工具进行编译。(注意:在安装时需要自定义安装并勾选开发语言中 Visual C++ 和针对Visual Studio 的Python 工具) 安装Python 3.8 ,Win7 无法安装太高的版本。 安装VS Code,并在VSCode 中安装Pyt

  • 本篇介绍利用gmssl算法库中的sm3模块来进行hash值的计算。 一 sm3 hash算法的特点: sm3用于计算一个消息的hash值; 几乎无法被逆向,即通过hash值无法推断出原始消息; sm3类似于md5,但是比md5安全;sm3是国密算法。 二 sm3算法举例: import binascii #导入国密算法sm4包 from gmssl import sm4,sm3 def sm3

 相关资料
  • 本文向大家介绍python实现RSA加密(解密)算法,包括了python实现RSA加密(解密)算法的使用技巧和注意事项,需要的朋友参考一下 RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其密钥的长度足够长,用RSA加密

  • Transt secret后端处理在途数据的加密函数。Vault不存储发送到后端的数据。它也可以被视为“加密作为一种服务”。 是否支持使用secp192r1曲线的ECDSA? -创建指定类型的新命名加密密钥,以后可用于加密/解密或签名/验证。它是否创建了私有和公共密钥对?是否有获取/输出公钥的方法? 是否可以创建执行加密操作但不返回私钥的自定义秘密后端?

  • 本文向大家介绍python实现的DES加密算法和3DES加密算法实例,包括了python实现的DES加密算法和3DES加密算法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现的DES加密算法和3DES加密算法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 本文向大家介绍Python基于DES算法加密解密实例,包括了Python基于DES算法加密解密实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python基于DES算法加密解密实现方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 我理解哈希和加密之间的区别。我正在寻找一种在Python中实现加密/解密字符串的简单方法。我在网上找到的大多数方法都是关于使用散列算法(MD5-SHA-1等)来进行单向散列。但不幸的是,哈希是不可逆的。有什么建议吗?