天天看点

sm2 国密算法工具实现及详细使用介绍

网上有很多网友问国密算法sm2怎么使用?什么是压缩公钥和非压缩公钥,长度有多长?xB和yB这参数是什么?怎么使用sm2做加解密?如何签名和验签?有没有工具来验证下?

这里分享个自己使用QT造的一个小工具,简单好用。用来对国密sm2算法做个加解密和签名,验签。

加密,解密验证:

其中xB为公钥,如果是压缩公钥,这里填33字节的16进制的压缩公钥,yB不用填,会自动计算得到。如果是非压缩公钥,则xB和yB都需要输入,分别填非压缩公钥的前32字节和后32字节。

日志窗口中可以看到详细的加密,解密日志。 

签名验证:

其中,xB位置输入sm2的压缩公钥,明文处输入消息内容,签名的输入框输入待验证的签名信息。点击验签按钮。最后看到日志窗口提示 verify success则是验签成功。

本用具使用以下标准参数。

p,a,b,Gx,Gy,n为椭圆曲线参数,目前国密sm2使用的是以下的值的参数,以后会不会变不知道。

这些参数当然也可以改,作为测试或者打造自己的一套加解密算法。

使用素数域256位椭圆曲线

曲线方程:y^2=x^3+ax+b

曲线参数

 p = FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF 

 a = FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC 

 b = 28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93 

 n = FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF409 39D54123 

 Gx = 32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589 334C74C7 

 Gy = BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0 

继续阅读