网上有很多网友问国密算法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