当前位置: 首页 > news >正文

小迪安全第9天:算法逆向与加密解密基础

一、加密算法分类与核心特征

1.1 三大加密类型对比

表格

类型代表算法核心特点解密条件成功率
单向散列加密MD5、SHA、MAC、CRC不可逆、固定输出、碰撞破解只需密文依赖明文复杂度
对称加密AES、DES、3DES加解密用同一密钥、速度快密文+密钥+模式+偏移量99.9%
非对称加密RSA、SSL、PKCS公钥/私钥配对、安全性高密文+公钥或私钥(配对即可)100%

1.2 单向散列加密详解(MD5/SHA)

核心原理:

  • 碰撞机制:固定明文→固定密文,通过预计算字典反向查询

  • 无额外参数:仅需明文和密文,无需密钥/偏移量

  • 加盐防御MD5(MD5(明文)+盐值)增加破解难度

MD5识别特征:

  • 固定长度:16位或32位

  • 字符范围:仅0-9a-f(十六进制)

  • 不可逆:无解密函数,只能碰撞

实战案例:PHP MD5加盐加密

php

复制

// 源码逻辑:两次MD5+盐值 $hash = MD5(MD5($password) . $salt); // 逆向脚本思路(碰撞法) $password = "123456"; // 尝试值 $a = MD5($password); $aa = $a . $salt; // 连接盐值 $aaa = MD5($aa); // 二次加密 if($aaa == $target_hash) { echo "OK"; }

1.3 对称加密详解(AES/DES)

必备解密四要素:

  1. 密文(Base64或Hex格式)

  2. 密钥(Key)——最关键

  3. 加密模式(ECB/CBC/CFB/OFB/CTR)

  4. 偏移量(IV)—— CBC等模式必需

AES vs DES 特征识别:

  • 密文含+/符号 → 大概率是AES/DES(Base64编码后)

  • 明文越长密文越长(与MD5固定长度区别)

  • 尾部常有=填充

AES加密示例流程:

plain

复制

明文"小迪SEC" → 密钥"123456" → 模式"AES-128-ECB" → Base64编码 → 密文输出

解密工具使用要点:

  • 模式错误 → 解密失败

  • 密钥错误 →绝对失败

  • 偏移量错误(CBC模式)→ 解密失败


1.4 非对称加密详解(RSA)

核心机制:

  • 密钥对:公钥(Public Key)+ 私钥(Private Key)

  • 配对规则:公钥加密→私钥解密;私钥加密→公钥解密

  • 特征:密文长度固定、每次加密结果不同

解密条件(满足其一即可):

  • 密文 + 公钥(对方用私钥加密时)

  • 密文 + 私钥(对方用公钥加密时)

  • 最佳实践:同时获取公钥和私钥,双向验证


二、密文识别与解密方法论

2.1 密文特征速查表

表格

算法长度特征字符特征尾部特征可逆性
MD516/32位固定0-9,a-f❌ 不可逆
SHA140位固定0-9,a-f❌ 不可逆
Base64随明文变化A-Z,a-z,0-9,+,/===✅ 直接解码
AES/DES随明文变化+/可能有=✅ 需密钥
RSA固定长度长串随机字符无规律✅ 需密钥对

2.2 标准解密流程(重点)

plain

复制

┌─────────────────────────────────────────┐ │ Step 1: 观察密文特征,初步判断算法类型 │ │ ↓ 能识别? │ │ ┌─────────┐ 否 ┌─────────────────┐ │ │ │ 直接解密 │ ←────── │ Step 2: 获取源码 │ │ │ └─────────┘ │ ├─ 后端加密→找源码 │ │ │ │ └─ 前端加密→抓包找JS│ │ └─────────────────────────────────────────┘

关键决策点:

表格

场景操作路径成功率
MD5/SHACMD5、SOMD5等在线平台碰撞依赖密码复杂度
Base64直接解码工具100%
AES/DES/RSA必须获取密钥→ 源码/前端JS/配置文件有密钥则100%
未知算法源码分析 → 定位加密函数 → 提取逻辑依赖源码获取

三、实战:源码级加密分析

3.1 后端加密(PHP示例)

场景:获取数据库密码密文,需还原明文

分析步骤:

  1. 定位加密文件user.phpadduser函数

  2. 提取加密逻辑

    php

    复制

    // 发现加盐MD5 MD5(MD5($password) . $salt)
  3. 构建碰撞脚本:按相同逻辑遍历字典

PHP内置哈希识别:

  • password_hash()函数 → 使用password_verify()验证

  • 特征:以$2y$开头(bcrypt算法)

  • 注意:CMD5等平台无法破解,需自建脚本碰撞


3.2 前端加密(JavaScript逆向)

核心优势:前端代码完全可见,无需服务器权限

分析流程:

  1. 抓包定位:登录请求 → 观察密码字段变化

  2. 查找JS引用:搜索md5.jsaes.js等加密库

  3. 跟踪加密逻辑

    JavaScript

    复制

    // 典型前端加密 var pwd = document.getElementById('password').value; var encrypted = MD5(pwd); // 调用自定义MD5函数
  4. 提取算法参数:密钥、模式、偏移量通常硬编码在JS中

关键工具:

  • 浏览器开发者工具 → Network面板 → JS文件分析

  • Burp Suite → 拦截对比明文/密文


四、靶场实战:加密算法与SQL注入

4.1 场景描述

  • 目标URL参数加密传输

  • 直接注入失败,需适配加密逻辑

  • 前提:获取源码得知为AES-128-CBC + 双重Base64

4.2 攻击流程

plain

复制

1. 获取源码 → 提取密钥和偏移量 2. 编写注入语句:' UNION SELECT ... 3. 按目标逻辑加密: 明文 → AES加密 → Base64编码 → Base64再编码 4. 替换URL参数值发送 5. 目标服务器解密后正常执行SQL

核心要点:

  • 注入Payload必须按对方解密逻辑构造

  • 直接发送明文Payload → 对方解密乱码 → 注入失败

  • 加密次数、编码顺序必须与源码完全一致


五、本章核心考点总结(SRC/CTF/面试)

5.1 必背知识点

表格

考点关键答案
MD5特征32位/16位,十六进制字符(0-9,a-f),不可逆
对称加密必备条件密文+密钥+模式+偏移量(密钥最重要)
RSA解密条件密文+公钥/私钥(配对即可),双钥最佳
Base64与AES区别Base64无+/,AES的Base64编码含+/
前端加密优势代码可见,通过JS文件直接提取算法
后端加密难点必须获取源码,无法直接猜测

5.2 CTF常见题型

  1. 密文识别题:给定字符串判断加密类型

  2. 密钥提取题:从JS/源码中找到隐藏密钥

  3. 算法逆向题:根据加密逻辑编写解密脚本

  4. 加密注入题:构造加密Payload完成SQL注入

5.3 面试高频问题

Q1:拿到一个32位十六进制字符串,如何解密?

判断为MD5,使用在线平台碰撞;若失败,寻找源码确认是否加盐,构建自定义碰撞脚本。

Q2:AES加密数据如何解密?

必须获取密钥、加密模式、偏移量。优先查看前端JS或后端源码,提取硬编码密钥。

Q3:RSA公钥加密的数据,只有公钥能解吗?

不能。公钥加密需私钥解密,私钥加密需公钥解密。实战中应同时获取公私钥配对验证。

Q4:如何快速判断加密位置在前端还是后端?

抓包对比输入密码与传输值:若传输值已加密→前端加密;若明文传输→后端加密。结合浏览器开发者工具查看JS文件确认。


5.4 工具清单

表格

用途工具/平台
MD5碰撞CMD5、SOMD5、自建Python脚本
AES/DES加解密在线工具、CyberChef、OpenSSL
RSA加解密RSATool、OpenSSL、在线工具
Base64编解码系统命令base64、Burp Suite
前端JS分析Chrome DevTools、Burp Suite
源码分析IDE全局搜索、正则匹配加密函数

学习建议:算法逆向的核心在于逻辑分析能力源码阅读能力,建议结合CTF Crypto题型与真实Web系统加密逻辑进行实战练习。

http://www.jsqmd.com/news/552404/

相关文章:

  • OpenClaw深度优化:百川2-13B量化模型响应速度提升50%方案
  • 告别FIFO!用ESP32-WROOM-32直连OV7670摄像头,手把手教你搭建低成本图像流服务器
  • 从‘中式英语’到‘期刊风’:我是如何用Grammarly和Google Scholar搞定论文润色最后一步的
  • PROJECT MOGFACE效果对比:不同提示词(Prompt)工程下的输出质量
  • LoRA训练实战:从数据集准备到模型调参的完整避坑指南
  • 2026云南优质花香蓝莓厂家实力解析:澄江蓝莓、云南花香蓝莓、云南蓝莓、澄江花香蓝莓、玉溪花香蓝莓、玉溪蓝莓选择指南 - 优质品牌商家
  • 2026年01月专业移动厕所租赁公司推荐:座式移动公厕/流动移动厕所租赁/环保移动公厕/移动公厕租赁/节能移动厕所租赁/选择指南 - 优质品牌商家
  • FUTURE POLICE在AIGC内容创作中的应用:语音驱动文本与视频生成
  • STM32CubeMX实战:CAN总线配置与过滤器详解
  • 终极指南:如何为Axure RP 9-11安装免费中文语言包,让原型设计效率提升50%
  • Videomass视频处理终极指南:三步掌握专业级FFmpeg图形界面操作
  • 【PyCon官方认证异步实践标准】:基于aiohttp+uvloop+trio的工业级异步架构设计(含GitHub千星项目源码解析)
  • Java Web 瑜伽馆管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 自动化数据标注:OpenClaw+Qwen3.5-9B加速AI模型训练
  • Display Driver Uninstaller:专业级驱动清理的深度解决方案
  • CODESYS总线驱动器配置与步进电机单轴运动控制实践
  • 如何快速掌握B站视频下载:DownKyi面向新手的终极教程
  • 链表面试必刷双题解 | 随机链表复制 + 排序链表 高频真题全解析
  • NodeJS报错解决:OnlyOffice8.2禁用JWT后如何允许私有IP下载文件
  • 告别RTMP高延迟:手把手教你用WebRTC + DJI SDK打造低延时无人机直播(Android实战)
  • 告别手动画封装!用立创商城+AD一键导入原理图与PCB库(附3D模型关联技巧)
  • 【菜鸟飞】Conda环境管理与vscode无缝协作实战指南
  • 【Python实战】PyArrow高效读写Parquet:从基础操作到大数据批处理
  • 用GPT-4o和MM-Agent,15分钟搞定数学建模竞赛题?手把手教你复现这个开源框架
  • Masaylo机器人控制库:Arduino嵌入式运动控制与传感器融合详解
  • 南北阁Nanbeige 4.1-3B实现数据库课程设计自动化
  • eNSP校园网项目复盘:老师指出的子网划分、设备备份等5个常见误区与优化方案
  • 国行Mac用户必看:Xcode 26 AI助手完整配置指南(含DeepSeek接入教程)
  • RT-DETR:以Transformer架构重塑实时目标检测的精度与速度边界
  • 哔哩下载姬(downkyi)技术解析与应用指南:从基础操作到高级优化