国密GmSSL v2版本命令行方式生成国密sm2私钥、公钥、签名和验证签名

前言

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

相关推荐
初级代码游戏4 个月前
国密起步5:GmSSL3交叉编译arm64
arm·国密·交叉编译·gmssl·aarch64
初级代码游戏4 个月前
国密起步1:GmSSL3安装和使用AES
c++·aes·国密·gmssl
Lazy Dave8 个月前
python gmssl SM4不填充加解密
开发语言·python·gmssl·sm4
执着的孙策8 个月前
死磕GMSSL通信-java/Netty系列(三)
java·开发语言·gmssl·netty gm·netty国密
小小工匠1 年前
GmSSL - GmSSL的编译、安装和命令行基本指令
gmssl
司徒荆1 年前
【2】SM2验签工具和RSA验签工具
python·sm2验签·rsa验签
KXue07031 年前
【T690 之十一】基于方寸EVB2开发板,结合 Eclipse+gdb+gdbserver 调试 CCAT 的流程总结
eclipse·gdb·gmssl·gdbserver·tih·t690·ccat
阿卡基YUAN1 年前
gmssl 在Windows下的编译注意事项
gmssl