在Python 2中实现AES加密和解密,你可以使用pycrypto库,这是一个非常流行的加密库,它提供了各种加密算法,包括AES。下面是一个使用pycrypto库实现AES加密和解密的简单示例:
首先,你需要安装pycrypto库。如果你还没有安装,可以通过pip安装:
pip install pycrypto
然后,你可以使用以下代码来实现AES加密和解密:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
# 密钥(必须是16, 24或32字节)
key = 'This is a key123'
# 初始化向量(必须是16字节)
iv = 'This is an IV456'
# 加密
def encrypt_aes(plain_text):
cipher = AES.new(key, AES.MODE_CBC, iv)
ct_bytes = cipher.encrypt(pad(plain_text, AES.block_size))
# 将二进制数据转换为base64编码,以便可以安全地传输
ct = base64.b64encode(ct_bytes)
return ct
# 解密
def decrypt_aes(enc_text):
ct = base64.b64decode(enc_text)
cipher = AES.new(key, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(ct), AES.block_size)
return pt
# 使用示例
plain_text = 'Hello, World!'
encrypted_text = encrypt_aes(plain_text)
print "Encrypted:", encrypted_text
decrypted_text = decrypt_aes(encrypted_text)
print "Decrypted:", decrypted_text
请注意,上面的代码使用了CBC模式,这是一种常见的AES加密模式。在CBC模式中,你需要一个初始化向量(IV),它应该是随机的,并且对于每个加密操作都是唯一的。在这个示例中,我为了简化使用了固定的IV,但在实际应用中,你应该为每次加密生成一个随机的IV。
此外,由于AES加密的数据是二进制的,所以通常我们会将其转换为base64编码,以便于在文本格式中安全地存储和传输。
请记住,pycrypto库在Python 3中已经不再维护,如果你使用的是Python 3,应该使用pycryptodome库,它是pycrypto的一个分支,完全兼容Python 3。