python sm4加密
时间: 2023-12-08 20:39:07 浏览: 108
以下是使用gmssl库进行SM4加密的Python代码示例:
```python
from gmssl import sm4
# 加密
def encrypt(key, plaintext):
cryptor = sm4.CryptSM4()
cryptor.set_key(key.encode(), sm4.SM4_ENCRYPT)
ciphertext = cryptor.crypt_ecb(plaintext.encode())
return ciphertext.hex()
# 解密
def decrypt(key, ciphertext):
cryptor = sm4.CryptSM4()
cryptor.set_key(key.encode(), sm4.SM4_DECRYPT)
plaintext = cryptor.crypt_ecb(bytes.fromhex(ciphertext)).decode()
return plaintext
# 测试
if __name__ == '__main__':
key = '1234567890abcdef' # SM4密钥长度为16字节
plaintext = 'hello world'
ciphertext = encrypt(key, plaintext)
print('加密后的密文:', ciphertext)
decrypted_plaintext = decrypt(key, ciphertext)
print('解密后的明文:', decrypted_plaintext)
```
上述代码中,我们使用了gmssl库中的sm4模块进行SM4加解密。其中,encrypt()函数用于加密,decrypt()函数用于解密。在加密和解密时,我们都需要指定SM4密钥,密钥长度为16字节。在加密时,我们使用了SM4的ECB模式进行加密,加密后的密文以十六进制字符串的形式返回。在解密时,我们需要将密文转换为字节流再进行解密,解密后的明文以字符串的形式返回。
阅读全文