sm4-cbc 怎么用
时间: 2024-05-28 11:05:16 浏览: 136
SM4 C语言实现
SM4-CBC是一种对称加密算法,它使用CBC(Cipher Block Chaining)模式对数据进行加密和解密。下面是使用SM4-CBC进行加密和解密的示例代码:
```python
from Crypto.Cipher import SM4
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
# 生成随机的16字节密钥
key = get_random_bytes(16)
# 创建SM4-CBC加密器
cipher = SM4.new(key, SM4.MODE_CBC)
# 加密数据
plaintext = b'This is a test message'
ciphertext = cipher.encrypt(pad(plaintext, SM4.block_size))
# 解密数据
decipher = SM4.new(key, SM4.MODE_CBC, iv=cipher.iv)
decrypted_data = unpad(decipher.decrypt(ciphertext), SM4.block_size)
print("Plaintext:", plaintext)
print("Ciphertext:", ciphertext)
print("Decrypted data:", decrypted_data)
```
在上面的代码中,首先使用`get_random_bytes()`函数生成一个16字节的随机密钥。然后,使用`SM4.new()`函数创建一个SM4-CBC加密器,传入密钥和加密模式。接下来,使用`encrypt()`方法对明文进行加密,并使用`pad()`函数对明文进行填充。解密过程与加密过程类似,使用`SM4.new()`函数创建一个解密器,传入密钥、加密模式和初始向量(即加密过程中生成的iv),然后使用`decrypt()`方法对密文进行解密,并使用`unpad()`函数去除填充。最后,打印出明文、密文和解密后的数据。
阅读全文