ctf常用古典密码
在 CTF(Capture The Flag)比赛中,古典密码是密码学方向的重要组成部分。下面我将系统地介绍 CTF 中所有常用的古典密码,并按类型进行分类。
一、替换密码
1. 单表替换密码
凯撒密码
-
原理:字母按固定偏移量移位
-
特征:字母频率分布与正常英语相似,只是整体偏移
-
破解:暴力破解(只有25种可能偏移)、频率分析
-
工具:
caesar命令、CyberChef、手工计算
ROT13
-
原理:偏移量为13的特殊凯撒密码
-
特征:自反密码,应用两次恢复原文
-
识别:字母被"旋转"到后半部分
-
工具:
rot13命令、在线工具
Atbash密码
-
原理:字母表反转(A↔Z, B↔Y, C↔X...)
-
特征:也是自反密码
-
识别:
A→Z,B→Y的固定映射 -
工具:简单脚本实现
简单替换密码
-
原理:每个字母随机映射到另一个字母
-
特征:保持单字母频率特征
-
破解:频率分析、模式分析(单字母词、双字母词等)
2. 多表替换密码
维吉尼亚密码
-
原理:使用关键词进行多表替换
-
特征:平滑了字母频率分布
-
破解步骤:
-
确定密钥长度(卡西斯基试验、重合指数)
-
对每组字母分别进行频率分析
-
-
工具:Vigenère solver、Cryptool
自动密钥密码
-
原理:使用明文自身作为部分密钥
-
变体:Autokey、Running key
-
特征:比维吉尼亚更安全
博福特密码
-
原理:与维吉尼亚类似但解密过程相同
-
特征:也是多表替换
二、换位密码
栅栏密码
-
原理:按"之"字形排列后按行读取
-
变体:
-
W型栅栏(经典)
-
常规栅栏
-
-
破解:尝试不同栏数
-
工具:在线栅栏解码器
列移位密码
-
原理:将明文写入矩阵,按密钥顺序按列读取
-
特征:字母不变,顺序改变
-
破解:分析列长,尝试不同排列
路线密码
-
原理:按特定路径(螺旋、蛇形等)填充和读取
-
变体:螺旋密码、蛇形密码
-
识别:需要猜测填充模式和读取路径
三、图形密码
猪圈密码
-
原理:使用网格和符号表示字母
-
特征:由点、线、方格组成
-
变体:共济会密码、九宫格密码
-
工具:记忆网格模式直接解码
培根密码
-
原理:用两组字符(A/B)表示5位二进制
-
特征:只有A和B(或其它两种符号)
-
识别:长度为5的倍数
-
工具:培根密码表
标准银河字母
-
原理:来自游戏《指挥官基恩》的替换符号
-
特征:特定的外星风格符号集
-
工具:对照表解码
四、编码类(非加密)
Base系列编码
Base64
-
特征:
A-Z a-z 0-9 + / = -
识别:通常以
=或==结尾 -
工具:所有编程语言内置支持
Base32
-
特征:
A-Z 2-7 = -
识别:只有大写字母和数字2-7
Base16(十六进制)
-
特征:
0-9 A-F -
识别:只有16个字符
Base58
-
特征:去除了容易混淆的字符(0OIl)
-
用途:比特币地址等
Base85/Ascii85
-
特征:使用更多字符,效率更高
-
识别:字符集更广
Base91
-
特征:使用91个可打印ASCII字符
-
效率:比Base64更高
其他编码
摩斯电码
-
特征:点
.划-分隔符/或空格 -
变体:有国际标准版本
-
工具:在线摩斯解码器
二进制/八进制/十进制
-
二进制:
0和1,可能分组 -
八进制:数字
0-7 -
十进制:ASCII码直接表示
URL编码
-
特征:
%后跟两个十六进制数字 -
示例:
%20表示空格
HTML实体
-
特征:
&xxx;格式 -
示例:
A或&A;表示A
五、机械密码
Enigma机密码
-
原理:二战德国使用的转子密码机
-
CTF应用:模拟Enigma机的简化版本
-
工具:在线Enigma模拟器
希尔密码
-
原理:基于线性代数的分组密码
-
特征:需要矩阵运算
-
破解:已知明文攻击
六、其他特殊密码
键盘布局密码
-
原理:基于键盘相邻键的替换
-
变体:QWERTY→AZERTY、键盘移位
-
识别:看起来像打字错误
图书密码
-
原理:使用书籍作为密钥,通过坐标定位
-
特征:数字对或数字三元组
-
破解:需要找到特定书籍
比尔密码
-
原理:使用特定书籍的单词索引
-
历史:著名的未解密码
曲谱密码
-
原理:用音乐符号表示字母
-
识别:乐谱形式的密文
七、CTF解题流程
识别方法
-
观察字符集
-
只有A/B:培根密码
-
只有A-Z:可能去掉了空格
-
包含
+/=:Base64 -
只有点和划:摩斯电码
-
-
分析频率
-
正常英语频率:单表替换
-
平滑的频率:多表替换
-
相同字母不同位置不同替换:维吉尼亚
-
-
寻找模式
-
固定长度分组:可能是编码
-
符号模式:图形密码
-
数字模式:坐标或索引
-
实用工具推荐
-
CyberChef - 全能密码学工具
-
dCode.fr - 各种古典密码解码
-
Cipher Tools - 在线多种密码工具
-
quipqiup - 自动替换密码破解
-
Vigenère Solver - 维吉尼亚密码分析
实战技巧
-
从简单开始:先尝试凯撒、ROT13、Atbash
-
检查Base系列:Base64是最常见的编码
-
注意组合:可能多层加密(如Base64+凯撒)
-
利用上下文:题目描述可能暗示密码类型
-
暴力尝试:对于简单密码可以快速尝试所有可能
八、典型CTF题目模式
入门级
-
Base64编码
-
凯撒/ROT13密码
-
简单的替换
进阶级
-
维吉尼亚密码
-
栅栏密码
-
培根密码
-
组合密码
高级
-
自定义替换表
-
多层加密
-
需要编程解决的复杂换位
-
仿射密码、希尔密码
