pythong中用aes进行加解密
时间: 2023-07-25 18:45:57 浏览: 102
在 Python 中,可以使用第三方库 `pycryptodome` 来进行 AES 加解密操作。以下是一个简单的 AES 加解密示例:
```python
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# 加密函数
def encrypt(plaintext, key):
iv = get_random_bytes(16) # 生成随机的 IV
cipher = AES.new(key, AES.MODE_CFB, iv)
ciphertext = iv + cipher.encrypt(plaintext)
return ciphertext
# 解密函数
def decrypt(ciphertext, key):
iv = ciphertext[:16] # 从密文中获取 IV
cipher = AES.new(key, AES.MODE_CFB, iv)
plaintext = cipher.decrypt(ciphertext[16:])
return plaintext
# 测试代码
key = get_random_bytes(16)
plaintext = b'Hello, world!'
ciphertext = encrypt(plaintext, key)
decrypted = decrypt(ciphertext, key)
print('Key:', key)
print('Plaintext:', plaintext)
print('Ciphertext:', ciphertext)
print('Decrypted:', decrypted)
```
在上面的代码中,我们首先导入 `Crypto.Cipher` 和 `Crypto.Random` 模块,使用 `get_random_bytes()` 函数生成一个随机的 128 位密钥。然后,我们定义了两个函数 `encrypt()` 和 `decrypt()`,分别用于加密和解密操作。
在 `encrypt()` 函数中,我们首先生成一个随机的 16 字节 IV,并使用 AES 算法和 CFB 模式创建一个新的 Cipher 对象。然后,我们使用 Cipher 对象的 `encrypt()` 方法对明文进行加密,并将 IV 和密文拼接在一起返回。
在 `decrypt()` 函数中,我们首先从密文中提取出 IV,并使用相同的密钥、算法和模式创建一个新的 Cipher 对象。然后,我们使用 Cipher 对象的 `decrypt()` 方法对密文进行解密,并返回解密后的明文。
最后,我们使用 `print()` 函数打印出密钥、明文、密文和解密后的明文,以便查看加解密结果。
需要注意的是,上面的示例中使用的是 AES-128 加密算法,密钥长度为 16 字节。如果需要使用其他密钥长度的 AES 算法,可以将 `get_random_bytes()` 函数中的参数修改为相应的长度(例如 AES-256 需要 32 字节的密钥)。此外,还需要注意保护好密钥,以免密钥泄露导致数据被非法访问。
阅读全文