JS逆向爬虫
一、对称加密(AES与DES)
1. 前言
随着互联网的发展,越来越多的数据需要在网络中进行传输。为了保证数据的安全性,在进行网络传输时,需要对数据进行加密操作,使得数据在传输过程中不被窃取或篡改。AES(Advanced Encryption Standard)就是一种经典的加密算法。
AES 算法源于比利时密码学家 Joan Daemen 和 Vincent Rijmen,它是一种对称加密算法
,通过使用相同的密钥对数据进行加密和解密操作
。AES 算法中,加密和解密操作是相反的过程,因此需要使用相同的密钥作为加密和解密的关键参数。
AES 算法使用分组密码体制,将明文按照固定大小进行分组,然后对每一分组进行加密。在加密过程中,AES 算法采用了多轮加密的方式,每一轮加密都包含了四种操作:SubBytes、ShiftRows、MixColumns 和 AddRoundKey。通过这些操作,AES 算法可以更加安全高效地对数据进行加密。
AES是一种对称加密
,所谓对称加密就是加密与解密使用的秘钥是一个。
2. 安装
pip install pycryptodome
AES 加密最常用的模式就是 ECB模式
和 CBC模式
,当然还有很多其它模式,他们都属于AES加密。ECB模式
和CBC模式
俩者区别就是 ECB 不需要 iv偏移量
,而CBC需要
。
"""
# 参数 作用及数据类型
1. 秘钥 :加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来; 数据类型为bytes
2. 明文 :需要加密的参数; 数据类型为bytes
3. 模式 :aes 加密常用的有 ECB 和 CBC 模式(为主)(我只用了这两个模式,还有其他模式);数据类型为aes类内部的枚举量
iv 偏移量 :这个参数在 ECB 模式下不需要,在 CBC 模式下需要;数据类型为bytes
AES - CBC - 128 用得最多
长度
16: *AES-128*
24: *AES-192*
32: *AES-256*
MODE 加密模式:
常见的ECB, CBC
ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。
"""
3. CBC加密
先加密 - 编码 - 解码 - 解密
from Crypto.Cipher import AES
import base64
# AES-128模式:key:16; iv:16位; 明文:是16的倍数;
# 明文
data = "Alex is ugly!" # 需要加密的内容
data = '{"name":"alex","msg":"ugly"}'
print(len(data)) # 13 位
while len(data) % 16 != 0: # 如果data不足16位的倍数就用空格补足为16位
data += "\0"
print(data, len(data)) # Alex is ugly! 16位
# 密钥
key = "1234567890123456".encode() # 保证16位数
# 偏移量
iv = "aaaabbbbccccdddd".encode() # 偏移量--必须16字节
# (1) 加密
# 创建一个aes对象
aes = AES.new(key, AES