AES python
时间: 2024-03-29 10:33:36 浏览: 70
AES(Advanced Encryption Standard)是一种对称加密算法,广泛用于数据加密和保护领域。在Python中,可以使用`cryptography`库来实现AES加密和解密。
首先,你需要安装`cryptography`库。可以使用以下命令来安装:
```
pip install cryptography
```
接下来,你可以使用以下代码示例来进行AES加密和解密:
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
def aes_encrypt(key, plaintext):
# 生成一个随机的初始化向量
iv = b'0123456789abcdef'
# 使用AES算法和CBC模式创建一个加密器
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
# 创建一个加密器对象
encryptor = cipher.encryptor()
# 使用PKCS7填充方式对明文进行填充
padder = padding.PKCS7(128).padder()
padded_plaintext = padder.update(plaintext) + padder.finalize()
# 加密明文
ciphertext = encryptor.update(padded_plaintext) + encryptor.finalize()
return ciphertext
def aes_decrypt(key, ciphertext):
# 生成一个随机的初始化向量
iv = b'0123456789abcdef'
# 使用AES算法和CBC模式创建一个解密器
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
# 创建一个解密器对象
decryptor = cipher.decryptor()
# 解密密文
padded_plaintext = decryptor.update(ciphertext) + decryptor.finalize()
# 使用PKCS7填充方式对解密后的明文进行去填充
unpadder = padding.PKCS7(128).unpadder()
plaintext = unpadder.update(padded_plaintext) + unpadder.finalize()
return plaintext
# 使用一个128位的密钥(16字节)
key = b'0123456789abcdef'
# 需要加密的明文
plaintext = b'Hello, AES!'
# 加密明文
ciphertext = aes_encrypt(key, plaintext)
print("加密后的密文:", ciphertext)
# 解密密文
decrypted_plaintext = aes_decrypt(key, ciphertext)
print("解密后的明文:", decrypted_plaintext.decode())
```
这是一个简单的AES加密和解密的示例,你可以根据自己的需求进行修改和扩展。
阅读全文