python之国密SM4加密、解密与SM2签名、验签
from gmssl import sm2,sm4 import base64 class SM4(): def __init__(self, key, iv="12345678"): self.key = key self.iv = iv def encrypt(self,text): """ 加密 :param text: 需要加密的文本 :return: """ sm4_encrypt = sm4.CryptSM4() sm4_encrypt.set_key(self.key.encode(), sm4.SM4_ENCRYPT) data = sm4_encrypt.crypt_ecb(text.encode()) data = base64.b64encode(data).decode("utf-8") return data def decrypt(self, text): """ 解密 :param text: 需要解密的文本 :return: """ sm4_decrypt = sm4.CryptSM4() sm4_decrypt.set_key(self.key.encode(),sm4.SM4_DECRYPT) data = sm4_decrypt.crypt_ecb(base64.b64decode(text) ).decode() return data def sm2_sign(self,text,private_key, public_key): """SM2数字签名,私钥进行签名,公钥进行验签""" signer = sm2.CryptSM2(private_key=private_key, public_key=public_key) data = signer.sign_with_sm3(text.encode(), self.iv.encode()) return data def sm2_verify(self, signdata, endata, private_key, public_key): """SM2数字签名,私钥进行签名,公钥进行验签""" signer = sm2.CryptSM2(private_key=private_key,public_key=public_key) data = signer.verify_with_sm3(signdata, endata.encode()) return data