前言
GmSSL是国密算法的工具库(主要包含SM2、SM3、SM4和国密SSL证书生成等功能),项目本身是OpenSSL的分支,但是截至文章发布为止,OpenSSL主分支的国密算法并不完善,目前并不支持签名和解签,所以国密算法这块还是需要使用GmSSL工具库。
网上现在并没有v2版本的GmSSL可用的命令行文章,本章用于记录这些命令。
本文原创自csdn博客,其他网站看到这篇文章都是盗,版,爬。虫。网站,支持原创,远离盗版。
GmSSL-v2编译安装
GmSSL-v2是c/c++编写的,编译比较麻烦,使用visual studio编译,需要perl环境,根据报错提示一步步来就可以编译成功。
国密算法命令行
通过GmSSL v2的命令行gmssl -help
可以查看帮助说明。
下面为国密sm2私钥、公钥、签名和验证签名四种常用的命令行。
私钥生成
使用椭圆曲线算法生成私钥
使用椭圆曲线生成私钥到文件
gmssl ecparam -genkey -name sm2p256v1 -text -out eguidPrikey.pem
生成私钥到命令行控制台
gmssl ecparam -genkey -name sm2p256v1 -text
-----BEGIN EC PRIVATE KEY-----
私钥内容
-----END EC PRIVATE KEY-----
公钥生成
生成公钥到控制台
gmssl pkey -in sm2.pem -pubout -text_pub
-----BEGIN PUBLIC KEY-----
公钥内容
-----END PUBLIC KEY-----
Public-Key: (256 bit)
pub:
04:dc:24:ec:0e:a2:a5:6a:51:0f:ec:f9:c4:af:a6:
96:3d:7b:b5:a3:b8:e8:00:8f:19:6e:89:20:31:e5:
51:99:28:a4:7f:94:fe:d9:f3:bf:c6:71:9e:09:8a:
82:24:d9:aa:0e:2b:78:c0:3d:37:1f:fb:43:f4:e0:
8a:10:eb:44:8d
ASN1 OID: sm2p256v1
NIST CURVE: SM2
生成公钥到文件
gmssl pkey -in sm2.pem -out pub.pem -pubout -text_pub
私钥生成签名
id为空默认填写1234567812345678,id一般自行决定
gmssl sm2utl -sign -in test.txt -inkey sm2.pem -out out.txt -id 1
公钥验证签名
id为空默认填写1234567812345678,验签id与签名id保持一致
gmssl sm2utl -verify -in test.txt -sigfile out -pubin -inkey pub.pem -id 1