在Python中,进行加密和解密操作时,需要确保数据是以字节对象(Bytes)的形式进行处理的。以下是一些基本的加密和解密方法:
对称加密
对称加密使用相同的密钥进行加密和解密。常见的对称加密算法包括AES、DES和RC4。
from Crypto.Cipher import AESfrom Crypto.Random import get_random_bytesfrom Crypto.Util.Padding import pad, unpad生成随机密钥key = get_random_bytes(16) AES-128需要16字节密钥待加密的数据data = b"这是一个测试"创建AES加密对象cipher = AES.new(key, AES.MODE_CBC)加密数据ct_bytes = cipher.encrypt(pad(data, AES.block_size))生成初始化向量(IV),用于CBC模式iv = cipher.iv输出加密后的数据和IVprint("加密后的数据:", ct_bytes)print("初始化向量(IV):", iv)
非对称加密
非对称加密使用一对密钥,一个公钥用于加密,一个私钥用于解密。常见的非对称加密算法包括RSA。
from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEP生成RSA密钥对key = RSA.generate(2048)private_key = key.export_key()public_key = key.publickey().export_key()待加密的数据data = b"这是一个测试"使用公钥加密数据public_key_obj = RSA.import_key(public_key)public_cipher = PKCS1_OAEP.new(public_key_obj)ct = public_cipher.encrypt(data)输出加密后的数据print("加密后的数据:", ct)

散列算法
散列算法,也称为哈希函数,将任意长度的数据映射为固定长度的输出。常见的散列算法包括MD5和SHA-256。
import hashlib待加密的数据data = b"这是一个测试"创建MD5哈希对象hash_obj = hashlib.md5()更新哈希对象hash_obj.update(data)获取MD5哈希值md5_hash = hash_obj.hexdigest()输出MD5哈希值print("MD5哈希值:", md5_hash)
Base64编码
Base64是一种编码方式,用于将二进制数据转换为ASCII字符串,常用于在HTTP等文本协议中传输数据。
import base64待编码的数据data = b"www.baidu.com"对数据进行Base64编码encoded_data = base64.b64encode(data)输出编码后的数据print("Base64编码后的数据:", encoded_data)对数据进行Base64解码decoded_data = base64.b64decode(encoded_data).decode("utf-8")输出解码后的数据print("Base64解码后的数据:", decoded_data)
以上示例展示了如何使用Python进行基本的加密和解密操作。请根据实际需求选择合适的加密算法,并注意密钥的安全管理。
