python对称加密如何使用

avatar
作者
筋斗云
阅读量:0

Python中实现对称加密,最常用的是AES(Advanced Encryption Standard)算法。AES是一种对称密钥加密算法,它使用相同的密钥进行加密和解密。

以下是使用Python的pycryptodome库进行AES对称加密的步骤:

  1. 首先,你需要安装pycryptodome库。你可以使用pip进行安装:
pip install pycryptodome 
  1. 然后,你可以使用以下代码进行AES对称加密:
from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad from Crypto.Random import get_random_bytes import base64  # 生成随机密钥 key = get_random_bytes(16)  # AES-128需要16字节密钥  # 加密数据 data = b'Hello, World!'  # 要加密的数据 cipher = AES.new(key, AES.MODE_CBC)  # 创建一个AES cipher对象 ct_bytes = cipher.encrypt(pad(data, AES.block_size))  # 加密数据并填充到块大小的整数倍 iv = base64.b64encode(cipher.iv).decode('utf-8')  # 获取并编码初始化向量 ct = base64.b64encode(ct_bytes).decode('utf-8')  # 获取并编码加密后的数据  print(f'IV: {iv}') print(f'CT: {ct}')  # 解密数据 ct_bytes = base64.b64decode(ct)  # 解码加密后的数据 iv = base64.b64decode(iv)  # 解码初始化向量 cipher = AES.new(key, AES.MODE_CBC, iv)  # 创建一个AES cipher对象,使用相同的密钥和IV pt = unpad(cipher.decrypt(ct_bytes), AES.block_size)  # 解密数据并去除填充  print(f'PT: {pt.decode("utf-8")}') 

注意:

  • 在实际应用中,你应该更加小心地处理密钥,而不是像示例中那样直接将其打印出来。
  • 在加密和解密时,确保使用相同的密钥和IV。
  • pad函数用于将数据填充到块大小的整数倍,以确保加密数据的完整性。同样,unpad函数用于去除填充。
  • Crypto.Random.get_random_bytes函数用于生成随机密钥和IV,这在实际应用中非常重要,因为它们不能是可预测的。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!