在爬虫中,常见的伪加密方式有Base64和MD5。Base64是一种简单的加密方式,可以用来加密数据,但是它很容易被解密。MD5是一种散列函数,主要用于生成消息摘要,它是不可逆的,主要用于验证数据的完整性。
以下是Python中这些加密方式的实现:
- Base64加密:
Python的内置库base64
提供了Base64的编码和解码功能。
import base64
# 编码
encoded_data = base64.b64encode(b"Hello World")
print(encoded_data) # 输出:b'SGVsbG8gV29ybGQ='
# 解码
decoded_data = base64.b64decode(b'SGVsbG8gV29ybGQ=')
print(decoded_data) # 输出:b'Hello World'
- MD5加密:
Python的hashlib
库提供了MD5加密功能。
import hashlib
# 加密
md5_data = hashlib.md5(b"Hello World").hexdigest()
print(md5_data) # 输出:'b10a8db164e0754105b7a99be72e3fe5'
需要注意的是,MD5加密后的结果是一个128位的散列值,不可逆。
- DES加密:
from Crypto.Cipher import DES
from binascii import b2a_hex, a2b_hex
key = b'ABCDEFGHIJKLMNOP'
def des_encrypt(data):
data = data.encode('utf-8')
mod = DES.new(key, DES.MODE_ECB)
return b2a_hex(mod.encrypt(data))
def des_decrypt(data):
mod = DES.new(key, DES.MODE_ECB)
return mod.decrypt(a2b_hex(data)).decode('utf-8')
encrypted_data = des_encrypt(b"Hello World")
print(encrypted_data) # 输出加密数据
decrypted_data = des_decrypt(encrypted_data)
print(decrypted_data) # 输出解密数据
- AES加密:
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
from Crypto.Random import get_random_bytes
key = get_random_bytes(16)
def aes_encrypt(data):
data = data.encode('utf-8')
aes = AES.new(key, AES.MODE_EAX)
ciphertext, tag = aes.encrypt_and_digest(data)
return b2a_hex(aes.nonce), b2a_hex(tag), b2a_hex(ciphertext)
def aes_decrypt(nonce, tag, ciphertext):
aes = AES.new(key, AES.MODE_EAX, nonce=nonce)
return aes.decrypt_and_verify(a2b_hex(ciphertext), a2b_hex(tag)).decode('utf-8')
encrypted_data = aes_encrypt(b"Hello World")
print(encrypted_data) # 输出加密数据
decrypted_data = aes_decrypt(*encrypted_data)
print(decrypted_data) # 输出解密数据
- RSA加密:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
from binascii import b2a_hex, a2b_hex
rsa = RSA.