开源加解密库之GmSSL

一、简介

GmSSL是由北京大学自主开发的国产商用密码开源库,实现了对国密算法、标准和安全通信协议的全面功能覆盖,支持包括移动端在内的主流操作系统和处理器,支持密码钥匙、密码卡等典型国产密码硬件,提供功能丰富的命令行工具及多种编译语言编程接口。

GmSSL 3 更容易跨平台,构建系统不再依赖Perl,默认的CMake构建系统可以容易地和Visual Studio、Android NDK等默认编译工具配合使用,开发者也可以手工编写Makefile在特殊环境中编译、剪裁。
 

二、下载:

git clone https://github.com/guanzhi/GmSSL.git

查看tag list清单:

git tag -l
gmbrowser-v0.1
v3.0.0
v3.1.0
v3.1.0-pr1
v3.1.1
v3.1.1-pr1

切换到最新的v3.1.1这个tag上

git checkout v3.1.1

三、编译:

linux下编译方法:

mkdir build
cd build
cmake ..
make
make test
sudo make install

windows编译

首先到打开vs2019或者其他版本的vs命令行

GmSSL是由北京大学自主开发的国产商用密码开源,实现了对国密算法、标准和安全通信协议的全面功能覆盖,支持包括移动端在内的主流操作系统和处理器,支持密码钥匙、密码卡等典型国产密码硬件,提供功能丰富的命令行工具及多种编译语言编程接口,可用于实现SM2加解密 [^3]。 ### 不同语言实现方式 #### C++ 有基于gmutil项目,对sm2加密算法在C++环境下实现的改进与完善项目,采用gmssl实现SM2加密算法,对gmutil项目代码进行了优化和增强,经过严格测试,确保加密和解密流程的稳定性,还提供了完善的示例代码和说明文档,适用于需要对数据传输进行加密保护的应用场景 [^1]。 #### Python 使用python GMSSL包可实现SM2加密解密签名验签功能。在使用前,需确保已经安装了python GMSSL包,然后根据提供的代码示例,可轻松实现SM2的加解密、签名验签以及证书验证等操作。在Python中使用gmssl包实现SM2加密和解密的一种应用场景是在用户注册时,生成一对新的 SM2 密钥,私钥安全地存储在服务器上,公钥存储在数据中,与用户的其它信息一起。使用公钥来加密用户的密码,并将加密后的密码存储在数据中;在用户登录时,使用存储的私钥来解密加密的密码,以便与用户输入的密码进行比较 [^2][^4]。 #### PHP 可通过PHP + gmssl命令行实现国密加解密,其中SM2为非对称加密,基于ECC,该算法已公开,由于基于ECC,其签名速度与秘钥生成速度都快于RSA,ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA [^5]。 ### 示例代码(Python) 以下是一个简单的Python使用gmssl包实现SM2加密和解密的示例代码: ```python from gmssl import sm2 # 生成密钥对 private_key = '00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D' public_key = 'B9C9A6E04E9C91F7BA880429273747D7EF5DDEB0BB2FF6317EB00BEF331A83081A6994B8993F3F5D6EADDDB81872266C87C018FB4162F5AF347B483E24620207' sm2_crypt = sm2.CryptSM2( private_key=private_key, public_key=public_key ) data = b"Hello, World!" # 加密 encrypt_data = sm2_crypt.encrypt(data) print("加密后的数据: ", encrypt_data.hex()) # 解密 decrypt_data = sm2_crypt.decrypt(encrypt_data) print("解密后的数据: ", decrypt_data.decode()) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值