網上有很多網友問國密算法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