GmSSL安装及配置
GmSSL安装
在网站上进行下载对应系统的GmSSL安装包
网址如下:
GmSSL下载地址
选择这两个包中的任意一个都可以。
随后将其解压生成对应的文件夹:GmSSL-3.0.0
进行安装
正常的安装一般都是使用make命令,但这里由于没有makefile,只有CMakeLists文件
故我们使用cmake .
指令进行安装
随后我们可以看到生成了一个Makefile
随后使用make命令
然后我们可以使用gmssl version进行验证是否安装成功
这里我们可以看到它找不到库
在网上通过查阅资料后了解需要配置软连接,配置如下:
ln -s “gmssl文件路径”/lib/libgmssl.so.3 /usr/lib64/libgmssl.so.3
ln -s “gmssl文件路径”/lib/libcrypto.so.3 /usr/lib64/libcrypto.so.3
然后再执行 gmssl version就成功啦
算法实现
sm2实现签名验签
首先为了避免文件过多繁杂,我们创建一个sm2文件夹
随后进入文件夹
生成公私钥对
使用指令gmssl sm2keygen -pass 1325 -out sm2.pem -pubout sm2pub.pem
进行分配公私钥对
指令详解
- pass 生成的SM2私钥的加密口令
- out 生成的SM2私钥
- pubout 生成的SM2公钥
签名及验签
首先创建一个待签名源文件origin.txt
其内容如下
随后使用指令gmssl sm2sign -key sm2.pem -pass 1325 -in origin.txt -out sm2.sig
进行签名
指令详解
- key SM2私钥
- pass SM2私钥的加密口令
- id 指定签名使用的的ID(可选项,默认为1234567812345678)
- in 待签名文件
- out SM2签名结果
使用 gmssl sm2verify -pubkey sm2pub.pem -in origin.txt -sig sm2.sig
进行验签
指令详解
- pubkey 公钥
- cert 数字证书
- id 签名值使用的ID
- in 待验证的原始数据
- sig 待验证的签名值
sm2实现加密解密
加密
使用以下指令进行加密
gmssl sm2encrypt -pubkey sm2pub.pem -in origin.txt -out sm2.der
解密
使用以下指令解密
使用以下指令进行加密
gmssl sm2decrypt -key sm2.pem -pass 1325 -in sm2.der
sm3实现
计算摘要值
使用指令进行计算摘要值echo -n 20201325xjr | gmssl sm3
正确性验证
在网上的在线加密工具中进行计算后发现和gmssl计算结果相同,正确性得以验证。
sm4实现
生成密钥
使用KEY和IV进行生产对称密钥
这里的KEY就是对应sm4的对称密钥
使用CBC模式进行加密解密
echo 20201325xjr | gmssl sm4 -cbc -encrypt -key $KEY -iv $IV -out sm4.cbc
gmssl sm4 -cbc -decrypt -key $KEY -iv $IV -in sm4.cbc
使用CTR模式进行加解密
echo 20201307lcy | gmssl sm4 -ctr -encrypt -key $KEY -iv $IV -out sm4.ctr
gmssl sm4 -ctr -decrypt -key $KEY -iv $IV -in sm4.ctr
指令详解
- key SM4加密解密使用的长度为128bit的key,使用16进制表示
- iv SM4加密使用的IV
- encrypt 进行加密
- decrypt 进行解密
- cbc 使用CBC模式
- ctr 使用CTR模式
- in 待加密/解密数据
- out 加密/解密结果
ZUC实现
生成密钥
KEY=20201325202013252020132520201325
IV=20201325202013252020132520201325
加解密
echo 20201307 | gmssl zuc -key $KEY -iv $IV -out zuc.bin
gmssl zuc -key $KEY -iv $IV -in zuc.bin
指令详解
- key ZUC算法使用的长度为128bit的key,使用16进制表示
- iv ZUC使用的IV
- in 待加密/解密数据
- out 加密/解密结果
sm9实现
生成SM9算法的主公钥和主私钥
gmssl sm9sign -key alice.pem -pass 1325 -in origin.txt -out hello.sig
gmssl sm9keygen -alg sm9sign -in sign_msk.pem -inpass 1325 -id alice -out alice.pem -outpass 1325
加解密
gmssl sm9sign -key alice.pem -pass 1325 -in origin.txt -out hello.sig
gmssl sm9verify -pubmaster sign_mpk.pem -id alice -in origin.txt -sig hello.sig