吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 36|回复: 1
上一主题 下一主题
收起左侧

[会员申请] 申请会员ID:Ming379999099

[复制链接]
跳转到指定楼层
楼主
吾爱游客  发表于 2026-1-12 03:45 回帖奖励 |自己
1、申 请 I D:Ming379999099
2、个人邮箱:
379999099@qq.com

3、原创技术文章
小白也能看懂的 Python AES 解密实战教学




—— 从报错到成功的完整踩坑指南**【原创声明】**本文为原创技术教程,记录个人在学习 AES 解密过程中的实践经验总结,所有代码均为实测可用,分享给同样在学习加解密的新手朋友。**【适用人群】**- 零基础 Python 初学者
**【环境准备】**- 系统:Windows 10/11- Python:3.8+(推荐 3.8-3.12 稳定版)- 库:pycryptodome- 工具:PowerShell 或 CMD**【前言】**第一次发帖,真的挺难各种删除各种改啊,就是付不出去,希望这次能挑战成功。本文全程用「大白话」讲解,不讲复杂加密理论,只讲「遇到什么问题→为什么会出这个问题→具体怎么解决→以后怎么避免」。我会完整还原一次真实的 AES+Base64 解密实战全过程,把新手能遇到的所有坑、报错、解决思路都讲透,看完你也能独立完成这类加密数据的解密工作。## 一、核心目标&#9989; 把接口传输的 Base64 密文,解密成可查看、可使用的标准 16 进制结果&#9989; 掌握移动端/工控/设备接口中最常见的数据解密方法---## 二、4 个必须搞懂的核心概念(白话版)### 1. AES(高级加密标准)- 可以理解为「一把加密/解密的锁」- 硬性规则:只支持 3 种固定密钥长度  - AES-128 → 密钥必须是「16 字节」  - AES-192 → 密钥必须是「24 字节」  - AES-256 → 密钥必须是「32 字节」- 本文实战用的是 **AES-128**,是最常用的规格### 2. Base64- **重要**:这不是加密!只是编码方式- 作用:把二进制数据转成「字母+数字+符号」的字符串,方便传输- 新手坑点:末尾可能缺少`=`号,解码前必须补全### 3. 填充(Padding)—— 核心难点!想象 AES 加密就像用「固定大小的盒子」打包数据,盒子容量永远是「16 字节」:- 数据刚好装满盒子 → 不需要填充- 数据装不满盒子 → 需要「填充物」塞满- 解密时:如果用了填充,需要去掉填充物(`unpad()`)- 如果没填充,却调用`unpad()` → 直接报错!### 4. 加密模式(Mode)&#9888;&#65039; **重要提示**- 本文使用 **AES-ECB 模式**(最简单,适合新手)- **缺点**:相同数据加密结果相同,安全性低- **生产环境推荐**:CBC、GCM 等更安全的模式- **解密他人数据必看**:先确认对方用什么模式!  - CBC 模式需要额外的 `iv` 参数  - 少了 `iv` 绝对解密失败---## 三、解密全流程图【新手救命神器】```mermaidgraph TD    A[开始解密] --> B[环境准备]    B --> B1[坑1: ModuleNotFoundError<br>没装加密库]    B --> B2[坑2: PowerShell权限/引号问题]        B --> C[处理输入数据]    C --> C3[坑3: 密钥长度不对]    C --> C4[坑4: Base64缺少=号]    C --> C5[坑5: 密钥格式错误]        C --> D[执行解密]    D --> D6[坑6: 填充错误]    D --> D7[坑7: 加密模式不对]        D --> E[处理结果]    E --> E8[坑8: 出现乱码]    E --> F[&#9989; 成功获得16进制结果]四、初始错误脚本(包含所有典型错误)python复制下载# 初始错误脚本示例(新手常见错误大全)import base64from Crypto.Cipher import AESfrom Crypto.Util.Padding import unpad  # 可能不需要# 你的数据(替换成自己的)key_str = "flsPnneMCUgxSFQKyDwfprlOarKE6pYL...(超长Base64密钥)"cipher_b64 = "+mo6xauTUlzeCQGRXFU068h4Nx1VBPksYf..."# 错误1:密钥处理 - 直接解码,没截取key_byte = base64.b64decode(key_str)  # &#10060; 会导致密钥长度报错# 错误2:密文处理 - 没补全=号cipher_byte = base64.b64decode(cipher_b64)# 创建解密器cipher = AES.new(key_byte, AES.MODE_ECB)# 错误3:强行解填充(可能不需要)decrypted_data = unpad(cipher.decrypt(cipher_byte), AES.block_size)  # &#10060; 填充报错# 错误4:强行转文本print(decrypted_data.decode('utf-8'))  # &#10060; 出现乱码五、实战全过程(8个阶段)阶段1:ModuleNotFoundError: No module named 'Crypto'问题:运行脚本提示找不到Crypto模块原因:没装第三方加密库解决:powershell复制下载python -m pip install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple注意:不要装crypto,要装pycryptodome阶段2:Incorrect AES key length (128 bytes)问题:密钥长度错误,显示128字节原因:AES-128只需要16字节,密钥太长解决:python复制下载# 补全=号 + 截取前16字节key_str += '=' * (4 - len(key_str) % 4)key_byte = base64.b64decode(key_str)[:16]  # 核心:[:16]阶段3:SyntaxError: invalid character问题:脚本中有无效字符原因:Python不认识&#9989;、&#128204;等特殊符号解决:删掉所有特殊符号和表情,注释只用文字阶段4:ValueError: Padding is incorrect问题:填充错误原因:加密时没填充,解密时却调用了unpad()解决:python复制下载# 错误代码decrypted_data = unpad(cipher.decrypt(cipher_byte), AES.block_size)# 正确代码(删掉unpad)decrypted_data = cipher.decrypt(cipher_byte)阶段5:解密出乱码/生僻字问题:解密成功但显示乱码原因:数据是二进制,不是文本解决:二进制转16进制python复制下载# 错误:强行转文本print(decrypted_data.decode('utf-8'))# 正确:转16进制final_result = decrypted_data.hex()print("解密成功!结果:", final_result)阶段6:PowerShell报错「不允许使用与号(&)」问题:运行命令时报错解决:powershell复制下载# 方法1:加引号& "C:/Python路径/python.exe" "G:/脚本路径/脚本.py"# 方法2:修改执行策略(管理员运行)Set-ExecutionPolicy RemoteSigned# 输入Y确认阶段7:分不清密钥格式判断方法:Base64格式:字母+数字++/=组合,长度长16进制格式:0-9+A-F组合,长度32/64位对应代码:python复制下载# Base64密钥key_str += '=' * (4 - len(key_str) % 4)key_byte = base64.b64decode(key_str)[:16]# 16进制密钥key_hex = "3D85700B0CAFDE887D1A2A3529D4B6FB"key_byte = bytes.fromhex(key_hex)阶段8:成功获得16进制结果成功标志:text复制下载解密成功!最终结果:0030a5f0793d43dead0cc1643612baadfb6b3ed26a29cf7f09c7f834076dbadf...这串16进制就是你要的最终数据,可直接用于后续分析。六、完整正确脚本(3个版本)版本1:Base64密钥解密(最常用)python复制下载import base64from Crypto.Cipher import AES# 你的数据a1 = "+mo6xauTUlzeCQGRXFU068h4Nx1VBPksYf..."b1 = "flsPnneMCUgxSFQKyDwfprlOarKE6pYL..."# 处理密钥b1 += '=' * (4 - len(b1) % 4)key = base64.b64decode(b1)[:16]# 处理密文a1 += '=' * (4 - len(a1) % 4)cipher = base64.b64decode(a1)# 解密aes = AES.new(key, AES.MODE_ECB)result = aes.decrypt(cipher).hex()print("解密成功:", result)版本2:16进制密钥解密python复制下载import base64from Crypto.Cipher import AESa2 = "nH8X06MAO/N1wjjRIR8H0zSjGczDWcSp..."b2 = "3D85700B0CAFDE887D1A2A3529D4B6FB"# 16进制密钥直接转字节key = bytes.fromhex(b2)a2 += '=' * (4 - len(a2) % 4)cipher = base64.b64decode(a2)aes = AES.new(key, AES.MODE_ECB)result = aes.decrypt(cipher).hex()print("解密成功:", result)版本3:万能合一版(推荐)python复制下载import base64from Crypto.Cipher import AES# 配置区(替换成自己的数据)a1 = "+mo6xauTUlzeCQGRXFU068h4Nx1VBPksYf..."b1 = "flsPnneMCUgxSFQKyDwfprlOarKE6pYL..."a2 = "nH8X06MAO/N1wjjRIR8H0zSjGczDWcSp..."b2 = "3D85700B0CAFDE887D1A2A3529D4B6FB"def decrypt(cipher_b64, key_str, is_hex=False):    # 处理密钥    if is_hex:        key = bytes.fromhex(key_str)    else:        key_str += '=' * (4 - len(key_str) % 4)        key = base64.b64decode(key_str)[:16]        # 处理密文    cipher_b64 += '=' * (4 - len(cipher_b64) % 4)    cipher = base64.b64decode(cipher_b64)        # 解密    aes = AES.new(key, AES.MODE_ECB)    return aes.decrypt(cipher).hex()# 执行解密res1 = decrypt(a1, b1)          # Base64密钥res2 = decrypt(a2, b2, True)    # 16进制密钥print("a1结果:", res1)print("a2结果:", res2)# 保存到文件with open("解密结果.txt", "w", encoding="utf-8") as f:    f.write(f"a1结果:\n{res1}\n\na2结果:\n{res2}")print("结果已保存到【解密结果.txt】")七、8个必记避坑技巧装库别装错 → 装pycryptodome,不是crypto密钥长度是硬规则 → AES-128=16字节,超长就截取前16字节Base64必补=号 → data += '=' * (4 - len(data) % 4)填充不是必须的 → 报填充错误就先删unpad()乱码≠失败 → 二进制转16进制:.hex()先判断密钥格式 → Base64解码 or 16进制转字节PowerShell加引号 → 路径有空格必须加双引号确认加密模式 → ECB还是CBC?CBC需要iv参数八、总结:新手解密万能思路第一步:解决环境问题库装对了吗?(pycryptodome)Python能正常运行吗?终端权限够吗?第二步:解决加密规则密钥格式是什么?(Base64/16进制)密钥长度对吗?(16/32字节)什么加密模式?(ECB/CBC)需要填充吗?第三步:处理数据格式是文本数据?→ 直接打印是二进制数据?→ 转16进制【结语】解密其实并不难,所有的报错都有原因和解决方法。新手只要「按报错找原因,一步一步解决」,就能从报错到成功。这次实战我们踩了8个坑,全部解决后得到了正确结果——这就是实战的意义,也是学习的过程!友情提示:本文仅供学习交流,请勿用于非法用途实际操作时,请替换成自己的密文和密钥遇到问题可以在楼下回复,我会尽量解答测试环境:Windows 11 + Python 3.12.3 + pycryptodome 3.20.0

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
Hmily 发表于 2026-1-12 16:16

抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-1-13 04:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表