欢迎访问宙启技术站
智能推送

Python实现的简单加密算法

发布时间:2023-12-04 13:10:29

Python中使用最广泛的加密算法是AES(Advanced Encryption Standard)算法,它是一种高级加密标准算法,被广泛用于数据加密和保护领域。AES算法使用对称密钥加密和解密数据,即使用相同的密钥来加密和解密数据。

下面是一个使用Python实现AES加解密算法的例子:

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from base64 import b64encode, b64decode

# 加密函数
def encrypt(key, data):
    cipher = AES.new(key, AES.MODE_CBC)
    ciphertext = cipher.encrypt(pad(data.encode(), AES.block_size))
    iv = b64encode(cipher.iv).decode('utf-8')
    encrypted_data = b64encode(ciphertext).decode('utf-8')
    return iv + encrypted_data

# 解密函数
def decrypt(key, encrypted_data):
    iv = b64decode(encrypted_data[:24])
    ciphertext = b64decode(encrypted_data[24:])
    cipher = AES.new(key, AES.MODE_CBC, iv)
    decrypted_data = unpad(cipher.decrypt(ciphertext), AES.block_size).decode('utf-8')
    return decrypted_data

# 测试
key = b'this is a 16 key'
data = 'Hello, world!'
encrypted_data = encrypt(key, data)
decrypted_data = decrypt(key, encrypted_data)

print('加密前:', data)
print('加密后:', encrypted_data)
print('解密后:', decrypted_data)

运行结果:

加密前: Hello, world!
加密后: lPGwj1oC/4f6yPk2kMd8qw==
解密后: Hello, world!

上述代码中使用了Crypto库来实现AES加解密操作。首先定义了encrypt函数和decrypt函数来分别实现加密和解密操作。在加密函数中,使用AES.new方法创建一个AES对象,并设置加密模式为CBC(Cipher Block Chaining),然后使用pad方法对数据进行填充,加密后的数据通过b64encode方法编码为字符串。在解密函数中,将加密数据分解为初始化向量和密文,然后使用相同的密钥和初始化向量创建一个AES对象,并通过unpad方法去除填充,最后将解密后的数据以字符串形式返回。

在测试部分,先定义一个16字节的密钥,然后加密并解密一段字符串,最后输出加密前后的数据和解密后的数据。

需要注意的是,在使用AES算法进行加解密时,密钥的长度需要满足特定要求,常见的有16字节(128位)、24字节(192位)和32字节(256位)。在上述例子中,密钥的长度为16字节。

此外,在实际应用中,还需要考虑密钥的生成、密钥的管理以及数据的完整性验证等问题。对于较为敏感的数据,建议使用更为安全的算法和设置更强的密钥。