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