aes加密算法python实现
时间: 2023-09-30 09:07:59 浏览: 79
以下是一个使用PyCryptodome库实现AES加密算法的示例代码:
```python
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# 加密函数
def encrypt(plaintext, key):
cipher = AES.new(key, AES.MODE_CTR)
nonce = cipher.nonce
ciphertext = cipher.encrypt(plaintext)
return nonce + ciphertext
# 解密函数
def decrypt(ciphertext, key):
nonce = ciphertext[:16]
cipher = AES.new(key, AES.MODE_CTR, nonce=nonce)
plaintext = cipher.decrypt(ciphertext[16:])
return plaintext
# 测试
key = get_random_bytes(16) # 随机生成16字节的密钥
plaintext = b"Hello, world!"
ciphertext = encrypt(plaintext, key)
decrypted_plaintext = decrypt(ciphertext, key)
print("原文:", plaintext)
print("密文:", ciphertext)
print("解密后的明文:", decrypted_plaintext)
```
注意,该示例代码中的密钥长度为16字节,这是因为AES-128使用128位密钥,即16字节;如果需要使用AES-192或AES-256,则需要分别使用24字节或32字节的密钥。此外,该示例代码中使用了CTR模式,因为CTR模式具有并行加密的优势,对于长数据加密效率高。但CTR模式也有一个缺点,就是需要使用不同的nonce避免重复加密同一数据。在实际应用中,需要根据具体情况选择合适的加密模式和密钥长度。
阅读全文