可以用python写一个采用cbc的3des加密解密算法代码吗
时间: 2023-06-12 08:06:46 浏览: 89
C语言3des加密解密算法,代码清晰,单片机上也能用,速度快,有例子
当然可以,以下是一个简单的示例代码:
```python
from Crypto.Cipher import DES3
import binascii
# 3DES加密
def des3_encrypt(key, data):
iv = b'\x00\x00\x00\x00\x00\x00\x00\x00'
cipher = DES3.new(key, DES3.MODE_CBC, iv)
padding_len = 8 - len(data) % 8
padding = bytes([padding_len] * padding_len)
data += padding
ciphertext = cipher.encrypt(data)
return binascii.b2a_hex(ciphertext).decode()
# 3DES解密
def des3_decrypt(key, data):
iv = b'\x00\x00\x00\x00\x00\x00\x00\x00'
cipher = DES3.new(key, DES3.MODE_CBC, iv)
ciphertext = binascii.a2b_hex(data)
plaintext = cipher.decrypt(ciphertext)
padding_len = plaintext[-1]
return plaintext[:-padding_len].decode()
# 测试
key = b'0123456789abcdef0123456789abcdef0123456789abcdef'
data = 'Hello, world!'
encrypted_data = des3_encrypt(key, data.encode())
print('Encrypted data:', encrypted_data)
decrypted_data = des3_decrypt(key, encrypted_data)
print('Decrypted data:', decrypted_data)
```
其中,`key` 是一个长度为 24 字节的字节数组,`data` 是需要加密的字符串。`des3_encrypt` 函数将 `data` 使用 CBC 模式和 PKCS5 填充进行 3DES 加密,并返回一个十六进制字符串表示的密文。`des3_decrypt` 函数将密文解密并返回明文字符串。在示例中,我们使用 `binascii` 模块将字节序列和十六进制字符串进行相互转换。
阅读全文