盘点 90% Python 爬虫中的常见加密算法(Python爬虫中90%常见的加密算法大盘点)
原创
一、引言
在Python爬虫领域,我们经常性会遇到各种加密算法。这些算法对于保护数据平安和防止恶意爬取起到了关键作用。本文将为您盘点Python爬虫中90%常见的加密算法,帮助您更好地懂得和应对这些加密手段。
二、对称加密算法
对称加密算法是指加密和解密使用相同的密钥。以下是一些常见的对称加密算法:
1. AES加密
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法。以下是一个使用Python实现AES加密和解密的示例:
import base64
from Crypto.Cipher import AES
# AES加密
def aes_encrypt(data, key):
iv = b'1234567890123456' # 初始化向量
cipher = AES.new(key, AES.MODE_CBC, iv)
data = data.encode('utf-8')
data += b' ' * (AES.block_size - len(data) % AES.block_size)
encrypted_data = cipher.encrypt(data)
return base64.b64encode(encrypted_data).decode('utf-8')
# AES解密
def aes_decrypt(encrypted_data, key):
iv = b'1234567890123456'
cipher = AES.new(key, AES.MODE_CBC, iv)
encrypted_data = base64.b64decode(encrypted_data)
decrypted_data = cipher.decrypt(encrypted_data)
return decrypted_data.strip().decode('utf-8')
key = b'1234567890123456'
data = 'Hello, World!'
encrypted_data = aes_encrypt(data, key)
decrypted_data = aes_decrypt(encrypted_data, key)
print(f'加密后: {encrypted_data}')
print(f'解密后: {decrypted_data}')
2. DES加密
DES(Data Encryption Standard)是一种较早的对称加密算法。以下是一个使用Python实现DES加密和解密的示例:
from Crypto.Cipher import DES
# DES加密
def des_encrypt(data, key):
iv = b'12345678' # 初始化向量
cipher = DES.new(key, DES.MODE_CBC, iv)
data = data.encode('utf-8')
data += b' ' * (DES.block_size - len(data) % DES.block_size)
encrypted_data = cipher.encrypt(data)
return encrypted_data.hex()
# DES解密
def des_decrypt(encrypted_data, key):
iv = b'12345678'
cipher = DES.new(key, DES.MODE_CBC, iv)
encrypted_data = bytes.fromhex(encrypted_data)
decrypted_data = cipher.decrypt(encrypted_data)
return decrypted_data.strip().decode('utf-8')
key = b'12345678'
data = 'Hello, World!'
encrypted_data = des_encrypt(data, key)
decrypted_data = des_decrypt(encrypted_data, key)
print(f'加密后: {encrypted_data}')
print(f'解密后: {decrypted_data}')
三、非对称加密算法
非对称加密算法是指加密和解密使用不同的密钥。以下是一些常见的非对称加密算法:
1. RSA加密
RSA(Rivest-Shamir-Adleman)是最早的公钥密码系统之一。以下是一个使用Python实现RSA加密和解密的示例:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 生成公钥和私钥
key = RSA.generate(1024)
private_key = key.export_key()
public_key = key.publickey().export_key()
# RSA加密
def rsa_encrypt(data, public_key):
public_key = RSA.import_key(public_key)
cipher = PKCS1_OAEP.new(public_key)
encrypted_data = cipher.encrypt(data.encode('utf-8'))
return encrypted_data.hex()
# RSA解密
def rsa_decrypt(encrypted_data, private_key):
private_key = RSA.import_key(private_key)
cipher = PKCS1_OAEP.new(private_key)
decrypted_data = cipher.decrypt(bytes.fromhex(encrypted_data))
return decrypted_data.decode('utf-8')
data = 'Hello, World!'
encrypted_data = rsa_encrypt(data, public_key)
decrypted_data = rsa_decrypt(encrypted_data, private_key)
print(f'加密后: {encrypted_data}')
print(f'解密后: {decrypted_data}')
2. ECC加密
ECC(Elliptic Curve Cryptography)是一种基于椭圆曲线的公钥密码系统。以下是一个使用Python实现ECC加密和解密的示例:
from ecdsa import SigningKey, NIST256p
# 生成公钥和私钥
private_key = SigningKey.generate(curve=NIST256p)
public_key = private_key.get_verifying_key()
# ECC加密
def ecc_encrypt(data, public_key):
public_key = public_key.to_pem()
encrypted_data = public_key + data.encode('utf-8')
return base64.b64encode(encrypted_data).decode('utf-8')
# ECC解密
def ecc_decrypt(encrypted_data, private_key):
encrypted_data = base64.b64decode(encrypted_data)
private_key = SigningKey.from_pem(private_key)
data = encrypted_data[len(private_key.to_pem()):]
return data.decode('utf-8')
data = 'Hello, World!'
encrypted_data = ecc_encrypt(data, public_key.to_pem())
decrypted_data = ecc_decrypt(encrypted_data, private_key.to_pem())
print(f'加密后: {encrypted_data}')
print(f'解密后: {decrypted_data}')
四、摘要算法
摘要算法是一种单向加密算法,重点用于验证数据的完整性。以下是一些常见的摘要算法:
1. MD5算法
MD5(Message-Digest Algorithm 5)是一种广泛使用的摘要算法。以下是一个使用Python实现MD5算法的示例:
import hashlib
# MD5加密
def md5_encrypt(data):
md5 = hashlib.md5()
md5.update(data.encode('utf-8'))
return md5.hexdigest()
data = 'Hello, World!'
encrypted_data = md5_encrypt(data)
print(f'加密后: {encrypted_data}')
2. SHA算法
SHA(Secure Hash Algorithm)是一种比MD5更平安的摘要算法。以下是一个使用Python实现SHA算法的示例:
import hashlib
# SHA加密
def sha_encrypt(data):
sha = hashlib.sha256()
sha.update(data.encode('utf-8'))
return sha.hexdigest()
data = 'Hello, World!'
encrypted_data = sha_encrypt(data)
print(f'加密后: {encrypted_data}')
五、总结
本文为您盘点了Python爬虫中90%常见的加密算法,包括对称加密算法、非对称加密算法和摘要算法。懂得和掌握这些加密算法对于应对爬虫中的加密数据具有重要意义。在实际应用中,我们需要通过具体场景选择合适的加密算法,确保数据的平安性和有效性。