aes加密解密python源码
时间: 2024-10-10 11:01:23 浏览: 52
在Python中,你可以使用`cryptography`库来实现AES加密和解密。这是一个强大的密码学库,包含了多种加密算法的支持,包括AES。以下是使用`cryptography`库的基本示例:
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import base64
def encrypt_AES(text, key, iv):
backend = default_backend()
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
encryptor = cipher.encryptor()
ciphertext = encryptor.update(text.encode('utf-8')) + encryptor.finalize()
return base64.b64encode(ciphertext).decode()
def decrypt_AES(encrypted_text, key, iv):
backend = default_backend()
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
decryptor = cipher.decryptor()
decoded_text = decryptor.update(base64.b64decode(encrypted_text)) + decryptor.finalize()
return decoded_text.decode('utf-8')
# 示例:使用随机生成的key和iv
key = bytes.fromhex('0123456789abcdef0123456789abcdef')
iv = os.urandom(16) # 使用os模块生成16字节随机iv
plaintext = 'Hello, World!'
encrypted_text = encrypt_AES(plaintext, key, iv)
decrypted_text = decrypt_AES(encrypted_text, key, iv)
print(f"Original text: {plaintext}")
print(f"Ciphertext: {encrypted_text}")
print(f"Decrypted text: {decrypted_text}")
```
注意,这只是一个基本的示例,实际使用时需要处理错误和初始化向量的安全存储等问题。同时,这个例子中使用CBC模式,还有其他模式可供选择,如GCM或CFB等。
阅读全文