天天看點

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 

繼續閱讀