用Python实现对称数据加密

2025-01-08 23:29:29   小编

用Python实现对称数据加密

在当今数字化时代,数据安全至关重要。对称加密作为一种常用的加密方式,能够有效保护数据的机密性。Python凭借其丰富的库和简洁的语法,为实现对称数据加密提供了便利。

对称加密算法中,加密和解密使用相同的密钥。常见的对称加密算法有DES、3DES、AES等。在Python中,我们可以借助第三方库pycryptodome来实现这些算法。需要安装该库,可以使用命令pip install pycryptodome

以AES算法为例,实现对称加密的过程如下。首先导入必要的模块:

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

接下来,生成一个固定长度的密钥和初始化向量(IV)。AES算法支持128位、192位和256位的密钥长度。这里我们选择256位密钥:

key = b'sixteen byte key'
iv = b'sixteen byte iv'

加密函数的实现:

def encrypt(plaintext):
    cipher = AES.new(key, AES.MODE_CBC, iv)
    padded_plaintext = pad(plaintext.encode('utf-8'), AES.block_size)
    ciphertext = cipher.encrypt(padded_plaintext)
    return base64.b64encode(ciphertext).decode('utf-8')

在这个函数中,首先创建AES加密对象,采用CBC模式并传入IV。然后对明文进行填充,使其长度为AES块大小的倍数,最后进行加密并将结果进行Base64编码。

解密函数则是加密的逆过程:

def decrypt(ciphertext):
    cipher = AES.new(key, AES.MODE_CBC, iv)
    decoded_ciphertext = base64.b64decode(ciphertext)
    unpadded_plaintext = unpad(cipher.decrypt(decoded_ciphertext), AES.block_size)
    return unpadded_plaintext.decode('utf-8')

这里先对密文进行Base64解码,再创建解密对象,对解码后的密文进行解密并去除填充。

使用示例:

plaintext = "Hello, World!"
encrypted_text = encrypt(plaintext)
decrypted_text = decrypt(encrypted_text)
print(f"Original: {plaintext}")
print(f"Encrypted: {encrypted_text}")
print(f"Decrypted: {decrypted_text}")

通过以上代码,我们实现了使用AES算法的对称数据加密和解密。利用Python和pycryptodome库,开发者可以轻松为项目添加数据加密功能,保障数据在传输和存储过程中的安全。不同的对称加密算法各有特点,开发者可根据具体需求选择合适的算法来保护数据安全。

TAGS: Python 数据加密技术 加密实现 对称数据加密

欢迎使用万千站长工具!

Welcome to www.zzTool.com