如何用python3.7实现AES加解密?
时间: 2025-02-01 18:05:28 浏览: 46
在Python 3.7中,虽然内置的`pycryptodome`库不再维护,但你可以选择使用`cryptography`库,它有很好的AES加密支持。以下是使用`cryptography`库实现AES加解密的步骤:
首先,确保已安装`cryptography`库,如果尚未安装,可以使用`pip`安装:
```bash
pip install cryptography
```
接下来,这里有一个基本的例子:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from base64 import b64encode, b64decode
# 密码(16字节,因为AES-128需要128位密钥)
password = b'sixteen_byte_long_random_password'
# 数据块大小(AES块大小)
block_size = AES.block_size
# 需要加密的明文
plaintext = b'This is a secret message.'
# 使用PKCS7对齐(保证数据长度是AES块的倍数)
padded_plaintext = pad(plaintext, block_size)
# 获取一个加密上下文(CBC模式为例,也可以使用其他模式如ECB、OFB等)
cipher = AES.new(password, AES.MODE_CBC)
# 加密
ciphertext = cipher.encrypt(padded_plaintext)
# 输出Base64编码以便传输
encoded_ciphertext = b64encode(ciphertext).decode('utf-8')
print(f"Encrypted text: {encoded_ciphertext}")
# 解密
# 获取解密上下文
cipher = AES.new(password, AES.MODE_CBC, iv=cipher.iv)
# Base64解码
decoded_ciphertext = b64decode(encoded_ciphertext)
# 对齐并解密
unpadded_decrypted = unpad(cipher.decrypt(decoded_ciphertext), block_size)
print(f"Decrypted text: {unpadded_decrypted.decode('utf-8')}")
```
注意:`Crypto`模块来自`pycryptodome`库,但为了简洁起见这里使用了`cryptography`库的API,实际操作中应优先考虑后者。
阅读全文
相关推荐

















