如何解码栅栏密码
栅栏密码解码器会逆向还原锯齿形编码过程。如果你知道使用的栏数,解码非常简单。如果不知道,暴力破解模式将尝试所有可能性,并对每个结果进行可读性评分。
手动解码(已知栏数)
当你知道密钥(栏数)时:
- 在输入框中输入密文
- 使用滑块设置栏数
- 解码后的明文将立即显示
暴力破解解码(未知栏数)
当栏数未知时:
- 输入密文
- 通过拨动开关启用暴力破解模式
- 解码器自动尝试所有栏数(2-20)
- 结果按英语语言相似度评分排序
- 得分最高的结果将被高亮显示为最佳匹配
理解评分
评分系统根据英语语言模式对解码文本进行评估:
- 字母频率:字母分布与预期英语频率的吻合程度
- 常见双字母组合:高频两字母对的出现情况(TH、HE、IN、ER 等)
- 常见词汇:常用英语单词的识别度(the、and、to 等)
- 可读性:单词和句子的长度规律
评分超过 60 表示高置信度,说明找到了正确的栏数。
成功解码的技巧
- 转置线索:如果密文的字母分布与正常英语一致,则很可能是栅栏密码等换位密码
- 消息长度:非常短的消息(少于 10 个字符)可能在多种栏数下均能解码,导致歧义
- 无空格:如果原始编码去除了空格,解码后的文本也将缺少空格——将其作为连续字符串阅读
- 结合上下文:利用任何可用的上下文(消息主题、预期格式、CTF 中的 flag 前缀)来识别正确结果
栅栏密码解码算法
解码算法的工作原理如下:
- 计算锯齿形模式:根据给定长度和栏数计算锯齿路径
- 统计每栏字符数:遍历锯齿模式,计算各栏的字符数量
- 将密文拆分为各栏片段:根据字符数将密文分割到对应栏
- 重建消息:按锯齿模式读取,从对应栏片段中依次取出字符
该过程是编码的精确逆过程,保证完美的往返还原。