在计算机科学与技术领域,加解密技术扮演着至关重要的角色,Python作为一种广泛应用的编程语言,拥有丰富的库和工具,使得加解密操作变得简便高效,本文将介绍Python中常见的加解密方法及其应用场景。
对称加密是一种加解密双方使用相同密钥的加密方式,Python中,常用的对称加密算法有AES、DES和3DES等,以AES为例,可以通过pycryptodome
库实现AES加密和解密,安装库并导入相关模块:
!pip install pycryptodome from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad
接着,创建加密密钥、初始化向量,并执行加密和解密操作:
key = get_random_bytes(16) # AES密钥长度可以是16, 24或32字节 iv = get_random_bytes(16) # 初始化向量长度与加密块大小相同,AES为16字节 cipher = AES.new(key, AES.MODE_CBC) plaintext = b"Hello, World!" padded_plaintext = pad(plaintext, AES.block_size) ciphertext = cipher.encrypt(padded_plaintext) decipher = AES.new(key, AES.MODE_CBC, iv) unpadded_plaintext = unpad(decipher.decrypt(ciphertext), AES.block_size)
非对称加密使用一对密钥,即公钥和私钥,常用的非对称加密算法有RSA、DSA和ECC等,Python中,可以使用cryptography
库实现RSA加密和解密,安装库并导入相关模块:
!pip install cryptography from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import padding
生成密钥对、执行加密和解密操作:
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) public_key = private_key.public_key() cipher = rsa.Cipher(public_key) ciphertext = cipher.encrypt(plaintext, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None )) decipher = rsa.Cipher(private_key) unpadded_plaintext = decipher.decrypt(ciphertext, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ))
哈希函数是将任意长度的输入数据映射为固定长度的输出,Python中,可以使用hashlib
库实现哈希计算:
import hashlib message = "Hello, World!" hash_object = hashlib.sha256(message.encode()) hex_dig = hash_object.hexdigest()
常见问题与解答:
Q1: 如何选择合适的加密算法?
A1: 根据数据敏感性、安全性需求和性能要求来选择,对称加密适用于加密大量数据,而非对称加密适用于加密小量数据或传输密钥。
Q2: 如何保护密钥不被泄露?
A2: 对称加密的密钥应通过安全方式传输和存储,非对称加密的私钥应妥善保管,公钥可公开。
Q3: 哈希函数有哪些应用场景?
A3: 哈希函数常用于数据完整性校验、数字签名、密码存储等场景。