天天看點

python3實作sm2加密和簽名

要用sm2加密算法,首先安裝加密庫  gmssl

線上安裝方式:pip install gmssl

GmSSL是一個開源的加密包的python實作,支援SM2/SM3/SM4等國密(國家商用密碼)算法、項目采用對商業應用友好的類BSD開源許可證,開源且可以用于閉源的商業應用。

SM2是國家密碼管理局于2010年12月17日釋出的橢圓曲線公鑰密碼算法。

RSA算法的危機在于其存在亞指數算法,對ECC算法而言一般沒有亞指數攻擊算法 SM2橢圓曲線公鑰密碼算法:我國自主知識産權的商用密碼算法,是ECC(Elliptic Curve Cryptosystem)算法的一種,基于橢圓曲線離散對數問題,計算複雜度是指數級,求解難度較大,同等安全程度要求下,橢圓曲線密碼較其他公鑰算法所需密鑰長度小很多。

1.首先來看一下如何通過gmssl内部的包生成公私鑰,實作如下。

from utils.gmssl.utils import PrivateKey #這是一個公共包,可線上查找
import base64

priKey = PrivateKey()
pubKey = priKey.publicKey()

new_prikey=priKey.toString()
new_pubkey=pubKey.toString(compressed = False)
print('私鑰哈希串:{}'.format(new_prikey))
print('公鑰哈希串:{}'.format(new_pubkey))

#公鑰和私鑰轉哈希
new_prikey_hex =