Python 开发AES算法与接口解密
这篇笔记围绕 AES 对称加密的基础机制和接口响应解密实践展开,先说明 AES 以 128 位分组处理数据,密钥可为 128、192、256 位,并强调加解密使用同一密钥。内容对 ECB、CBC、CFB、OFB、CTR 等模式做了区分:ECB 不需要 IV 但相同明文块会产生相同密文,CBC 等模式依赖初始化向量来提升随机性,其中 CBC 会让每个块与前一块密文形成链式关系。实践部分先用 Python 和 pycryptodome 演示 ECB 解密流程,包括 Base64 解码、创建 AES.MODE_ECB 解密器、解密字节数据以及按 PKCS7 规则去除填充。随后以接口返回的 data 与 secret 为线索,通过 Chrome 全局搜索前端代码,定位到调用 Ie(e.data, e.secret) 后再 parseJson 的解密逻辑,并继续分析该函数实际使用 CryptoJS 的 AES-CBC、Pkcs7 padding 和 window.TurboApply.data.aesIv 作为 IV。文章还给出 Python 复现 AES-CBC 解密的代码结构,明确需要把 secret 和 iv 转为 UTF-8 字节、对密文做 Base64 解码、再调用 AES.new(key, AES.MODE_CBC, iv) 并 unpad。最后提醒固定 IV 会削弱 CBC 的安全性,容易造成相同明文产生可比较的密文模式;更合理的实现是每次加密生成随机且唯一的 16 字节 IV,并随密文一起传输,适合想理解接口加密分析、AES 模式差异和解密复现流程的开发者阅读。
