python2中实现AES的加解密

240 阅读2分钟

在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。