编码加密 · 古典密码

古典密码合集

Atbash/培根/栅栏/仿射

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 51 次使用
Atbash · 培根 · 栅栏 · 仿射 · 摩尔斯 · 反序 · 全本地
密码类型
原文 plain
0 字符
结果 result
0 字符
说明cipher notes
就绪 · 选择密码类型,输入文本后加解密
第一节

关于本工具

About

学生抄写维吉尼亚密码作业,对着密钥“KEY”和明文“HELLO”算出密文,却卡在密钥重复与字母表偏移的对应关系上。这个工具把 Atbash、培根、栅栏、仿射四种古典密码的加解密逻辑拆成可视步骤:输入文本与密钥,它逐字展示偏移或替换过程,并标出算法边界(如仿射密码要求密钥与26互质)。所有计算在浏览器内完成,密文与明文均不上传服务器。

使用场景

密室谜题卡壳

密室逃脱的最后一关,墙上刻着一串由字母和数字组成的密文,提示是“凯撒密码”,但试了常规位移解不出。玩家用本工具切换栅栏密码试了不同栏数,发现按 5 栏分组后得到一串有意义的英文短语。本工具支持多种古典密码实时切换、边调参数边看结果,省去手动推算时间,在倒计时压力下快速破局。

桌游暗号破译

朋友聚会玩《谍报风云》,规则要求用培根密码传递阵营信息。手边没有对照表,每次加密要翻手机查字母—二进制映射,一局下来耗时 15 分钟。用本工具的培根密码模块,输入明文后直接看到 5 位字母组合的密文,队友拿到密文反向粘贴也能秒出原文。把破译时间压缩到 30 秒以内,游戏节奏不再被打断。

古书批注还原

古籍爱好者淘到一本民国时期的手抄本,书页空白处有用铅笔写的字母串,怀疑是当年藏书人用 Atbash 密码做的批注。Atbash 是字母表反转映射,手工逐个对照 A→Z、B→Y 效率极低,100 个字母要算 20 分钟。把整段字母输入本工具,选择 Atbash 模式,点击即得到反转后的明文,发现是藏书人对书中典故的出处补充。

CTF 预赛抢分

参加高校网络安全竞赛(CTF)线上预选赛,一道 Crypto 题给出了一段由大小写字母和数字组成的密文,提示是“古典密码,含三种变换”。队友手动试了仿射密码的几种常用参数组合,花了 8 分钟没找到规律。用本工具同时打开仿射密码和栅栏密码两个模块,分别输入密文并快速调整参数,2 分钟内发现先做 3 栏栅栏再套仿射的复合加密方式,成功解出 Flag 拿到分数。

解谜书验证答案

玩《谜宫·如意琳琅图籍》这类解谜书时,书里给出的线索需要组合成密码,再用特定古典密码解码才能得到下一关提示。玩家推理出加密方式是仿射密码,但手动计算模逆元容易算错,导致误以为自己推理方向有误。把推理出的密文和猜测的密钥参数输入本工具,立即输出明文,验证正确后再推进剧情,避免因计算失误浪费时间重读线索。

第二节

使用指南

Getting Started

使用步骤

  1. 1在「明文」输入框中粘贴待加密的文本,支持中文、英文及数字混合内容
  2. 2从「密码算法」下拉菜单选择一种:Atbash、培根、栅栏或仿射,选中后下方显示该算法的参数说明
  3. 3若选栅栏,在「栏数」输入框键入 2-20 的整数;若选仿射,在「a 值」和「b 值」框分别输入互质的整数
  4. 4点击「加密」按钮,右侧「密文」区域立即输出转换后的结果,同时底部「步骤记录」区逐行展示每字符的变换过程
  5. 5点击「密文」框旁的复制图标,结果自动存入剪贴板,页面顶部出现「已复制」提示条

输入输出示例

输入输出说明
HELLO(Atbash 加密)SVOOL常规:英文字母全大写,Atbash 对称替换的典型用例,结果可反向还原验证
hello(Atbash 加密)svool边界:小写输入,验证工具是否自动统一字母大小写处理,部分实现会报错
HELLO WORLD(培根密码加密,使用标准 24 字母表)AABBB AABAA ABBAB ABBAB AABBA / AABBB AABAA ABBAB ABBAB AABBA常规:含空格,培根密码每个字母对应 5 位 A/B 编码,空格保留或忽略需确认
HELLO(培根密码加密,使用 26 字母表含 I/J 和 U/V)AABBB AABAA ABBAB ABBAB AABBA边界:26 字母表下 I/J 和 U/V 共享编码,输入 'HELLO' 无歧义,验证工具是否明确标注所用字母表版本
HELLO WORLD(栅栏密码加密,栏数 3)HOR LELOWLD常规:经典栅栏加密,栏数 3 时按行排列再逐行读取,结果含空格需注意
HELLO(栅栏密码加密,栏数 1)HELLO边界:栏数为 1 时等于未加密,验证工具是否处理这种退化为恒等变换的极端值
HELLO(仿射密码加密,a=5, b=8,模 26)RCLIY常规:仿射加密需指定 a 和 b,且 a 必须与 26 互质,此例 a=5 合法,验证加密公式 (5x+8) mod 26 正确性
HELLO(仿射密码加密,a=2, b=0,模 26)(工具应报错或提示 'a 与 26 不互质,无法解密')易错:a=2 与 26 不互质(gcd=2),导致加密不是双射,无法解密。用户常误以为任意 a 都可用,此例暴露参数合法性校验

常见错误对照

1.Atbash 混淆字母大小写

✗ 错误输入明文 "Hello",期望输出 "Svool",实际输出 "svool"
✓ 修复输入 "HELLO" 或确保大小写统一

Atbash 映射基于字母表位置,大小写不敏感时小写输出;若工具区分大小写,需统一输入格式。

2.培根密码未区分 AB 与 01

✗ 错误输入 "01001" 作为密文,工具返回乱码
✓ 修复输入 "AABBB" 或确认工具接受的编码格式(AB/01/ab)

培根密码标准使用 A/B 表示二进制,部分工具支持 0/1 但需明确;混用格式导致解码失败。

3.栅栏密码栏数超过字符数

✗ 错误输入 "HELLO",栏数设为 6
✓ 修复栏数设为 2 或 3

栅栏密码栏数不能大于明文长度,否则部分栏为空,输出结果截断或报错。

4.仿射密码 a 值未与 26 互质

✗ 错误输入 a=4, b=5,加密 "A" 得到 "E",但解密失败
✓ 修复输入 a=3, b=5(gcd(3,26)=1)

仿射密码要求 a 与 26 互质,否则加密不可逆;a=4 与 26 有公因子 2,解密时模逆不存在。

5.栅栏密码混淆栏数与分组数

✗ 错误输入 "HELLO WORLD",栏数设为 3,期望按 3 字符一组
✓ 修复栏数设为 3,理解这是分栏数,非分组大小

栅栏密码栏数指纵向分栏数,非每栏字符数;常见混淆导致输出与预期不符。

6.Atbash 处理非字母字符

✗ 错误输入 "HELLO!",期望输出 "SVOOL!",实际输出 "SVOOL" 或报错
✓ 修复输入 "HELLO" 或确认工具是否保留非字母字符

Atbash 仅映射 A-Z,空格、标点等非字母字符处理方式因工具而异,需先验证。

7.培根密码密文长度非 5 的倍数

✗ 错误输入 "AABBAAB"(7 字符),工具无输出
✓ 修复输入 "AABBAABBA"(10 字符)

培根密码每组 5 位二进制,密文长度必须是 5 的倍数,否则解码无法对齐分组。

8.仿射密码 b 值超出 0-25 范围

✗ 错误输入 a=1, b=30,加密 "A" 得到 "E"(30 mod 26=4)
✓ 修复输入 a=1, b=4(或 b 在 0-25 内)

仿射密码的 b 值模 26 后有效,超出范围自动取模,但用户可能误以为 b=30 是独立参数。

第三节

工作原理

How It Works

核心公式

E(x) = (a·x + b) mod 26

变量说明

  • x明文字母对应数字(A=0,…,Z=25)
  • a密钥乘数,需与26互质(如1,3,5,7,9,11,15,17,19,21,23,25)
  • b密钥偏移量,0–25的整数
  • E(x)密文字母对应数字

示例

明文 'HELLO' 用仿射密码 a=5, b=8 加密:H(7)→(5×7+8)=43 mod 26=17→R;E(4)→(5×4+8)=28 mod 26=2→C;L(11)→(5×11+8)=63 mod 26=11→L;L(11)→11→L;O(14)→(5×14+8)=78 mod 26=0→A。密文:RCLLA。

输入原文选择算法算法分支Atbash:字母反转培根:字母→5位二进制栅栏:按行重排仿射:线性变换密文 / 明文即时展示复制下载
用户输入 / 操作 本地算法处理 输出结果
第五节

常见问题

Q & A
栅栏密码里的栏数到底填几?填错了能解出来吗?

栏数就是想把原文分成几行来重排。比如原文12个字,栏数填3,每行就是4个字,然后按列读。填错了会解出乱码,且不同栏数可能解出不同结果。本工具支持1-20的整数栏,建议从2开始试,如果原文很短(比如6个字),栏数2和3都试一下,看哪个出有意义的词。一般栏数不会超过原文长度的一半。

培根密码的AB两组字母怎么对应?我自己设的行不行?

经典培根密码用A和B两组字母代表二进制0和1,每组5个字母组成一个字母。标准对应表是固定的:比如AAAAA=A,AAAAB=B,以此类推。本工具内置的就是这套标准表,不支持自定义映射。如果你手头有自己编的映射表,需要先手动转成标准表再输入,或者直接用本工具的“自定义映射”功能(如果有的话,当前版本没有)。建议直接使用标准表,以免解码时对不上。

Atbash 是不是就是把字母表反过来?中文能不能用?

Atbash 只适用于纯英文字母,把 A 换成 Z、B 换成 Y,以此类推。中文无法直接使用,因为中文字符没有对应的反转表。如果输入中文,本工具会原样保留不处理。如果想用类似思路处理中文,需要自己先建立映射表(比如把“一”换成“十”),但这不是本工具的功能。简单说:只对 A-Z 有效,数字和符号也不处理。

仿射密码里那个 a 和 b 怎么算?我随便填行吗?

仿射密码的公式是 E(x) = (ax + b) mod 26。a 必须和 26 互质(即最大公约数为1),否则无法解密。可选的 a 值只有 1、3、5、7、9、11、15、17、19、21、23、25 这12个。b 可以是 0-25 的任意整数。随便填不互质的 a(比如2、4、6)会导致多个字母映射到同一个密文,解密时会有歧义。本工具输入框会校验 a 是否合法,不合法会提示。

我有一段密文,不知道是哪种古典密码,怎么试?

本工具是四种密码的合集,每种独立使用,不提供自动识别功能。建议按排除法试:先看密文是否全是字母且无空格(可能是栅栏或 Atbash),再看是否只有 A/B 两种字母(可能是培根),再看是否每个字母都对应一个数字偏移(可能是仿射)。如果密文里有特殊符号或数字,大概率不是这四种。最笨的办法:把密文分别复制到四个选项卡里,点加密/解密,看哪个输出是英文单词。

为什么我加密后结果和网上其他工具不一样?

常见原因有两个。一是参数不同:比如栅栏密码有的工具默认栏数=2,有的默认=3;仿射密码的 a 和 b 默认值也可能不同。二是实现细节差异:比如栅栏密码有“W型”和“传统型”之分,本工具用的是传统型(按行写入,按列读出)。建议先拿一个已知结果的短词(比如“HELLO”用 Atbash 加密应该是“SVOOL”)验证一下本工具的默认参数,再处理自己的文本。

这些密码只能加密英文吗?数字和空格怎么处理?

对,这四种古典密码只处理 A-Z 英文字母。数字、空格、标点符号、中文等非字母字符,本工具会原样保留不加密。比如输入“HELLO 123”,Atbash 加密后得到“SVOOL 123”。如果你希望数字也被加密,需要先用其他工具把数字转成字母(比如 A=1, B=2),再丢进本工具。空格保留是为了方便阅读,但加密强度会降低,因为攻击者能看出单词边界。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭