GmSSL 簽名驗簽-計算Z值


從網上找了很多,都沒有寫的特別清楚的,gmssl官網還有小bug,特此寫如下文檔供參考:

運行環境:安裝了Gmssl環境的Linux(詳見上一篇博客)

 

生成SM2私鑰(需要輸入密碼,最少4位)

$ gmssl sm2 -genkey -sms4 -out sm2.pem

將SM2私鑰整數值轉換為PEM格式的私鑰

$ gmssl sm2 -inform text -out sm2.pem

導出SM2公鑰

$ gmssl sm2 -in sm2.pem -pubout -out sm2Pub.pem

顯示SM2私鑰的Z值

$ gmssl sm2 -genzid -in sm2.pem -id 1234567812345678 -noout

計算帶Z值的雜湊值

$ gmssl sm2utl -dgst -in msg.txt -pubin -inkey sm2Pub.pem -id 1234567812345678

對消息簽名

$ gmssl sm2utl -sign -in msg.txt -inkey sm2.pem -id 1234567812345678 -out sig.der 

$ gmssl sm2utl -verify -in msg.txt -sigfile sig.der -pubin -inkey sm2Pub.pem -id 1234567812345678

注意,sm2utl是對消息簽名,因此支持輸入為任意長的消息。pkeyutl也可以進行SM2簽名,但是輸入是消息的雜湊值

加密解密

$ gmssl sm2utl -encrypt -in msg.txt -pubin -inkey sm2Pub.pem -out enced.der
$ gmssl sm2utl
-decrypt -in enced.der -inkey sm2.pem

和pkeyutl交互

$ gmssl sm2utl -dgst -in msg.txt -pubin -inkey sm2Pub.pem -id 1234567812345678 -out msg.sm3 

$ gmssl sm2utl -sign -in msg.txt -inkey sm2.pem -id 1234567812345678 -out sm2.sig 
$ gmssl pkeyutl
-verify -pkeyopt ec_scheme:sm2 -in msg.sm3 -sigfile sm2.sig -pubin -inkey sm2Pub.pem $ gmssl pkeyutl -sign -pkeyopt ec_scheme:sm2 -in msg.sm3 -inkey sm2.pem -out sm2.sig $ gmssl sm2utl -verify -in msg.txt -sigfile sm2.sig -pubin -inkey sm2Pub.pem -id 1234567812345678
$ gmssl sm2utl -encrypt -in msg.txt -pubin -inkey sm2Pub.pem -out enced.der $ gmssl pkeyutl -decrypt -pkeyopt ec_scheme:sm2 -pkeyopt ec_encrypt_param:sm3 -in enced.der -inkey sm2.pem $ gmssl pkeyutl -encrypt -pkeyopt ec_scheme:sm2 -pkeyopt ec_encrypt_param:sm3 -in msg.txt -pubin -inkey sm2Pub.pem -out enced.der $ gmssl sm2utl -decrypt -in enced.der -inkey sm2.pem
 

SM2數字簽名

SM2數字簽名方案中被簽名的雜湊值不僅僅是消息的雜湊值,而是簽名者身份信息串聯上消息的雜湊值,其中簽名者身份信息是簽名者的可辨別標識字串、橢圓曲線方程系數、生成元和簽名者公鑰串聯后字串的雜湊值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM