编码加密 · 古典密码

凯撒密码

移位 1-25/暴力破解所有偏移

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 116 次使用
移位 1-25 · 暴力破解所有偏移 · 全本地
模式 偏移 3
明文 plain
0 字符
密文 cipher
0 字符
加密:明文 +3 → 密文
映射表cipher alphabet · A → ?
暴力破解brute force · all 25 shifts
在输入框中填入密文,下方列出全部 25 种偏移的解密结果,点任意一行可应用到输入框。
就绪 · 输入文本并调整偏移即时移位
第一节

关于本工具

About

收到一段密文,不确定是凯撒移位还是乱码。这个工具把字母表按1到25位依次移位,同时展示所有可能结果——一眼扫过去,有意义的英文句子就是原文。纯浏览器运算,密文不离开本地。

使用场景

壹

破解谜题线索

参加线上密室逃脱时,收到一张纸条:『WKH ODUJH LV LQ WKH OLIBUDUB』。队友猜是字母移位,但不知道具体偏移了几位。本工具一键暴力破解所有 25 种偏移,瞬间发现这是偏移 3 的凯撒密码,原文是『THE LARGE IS IN THE LIBRARY』,直接锁定下一关目标。

贰

解密游戏存档

从二手网站买来的老游戏光盘,安装后发现存档文件被加密,文件名全是『QEB NRFZH YOLTK CLU』这种乱码。怀疑是游戏作者用简单移位保护存档。用本工具逐一尝试 1-25 偏移,在偏移 23 时得到『THE OLD CASTLE KEY』,确认是存档密码,成功打开隐藏关卡。

叁

验证历史密码本

整理祖父遗物时发现一本 1960 年代的笔记本,每页开头都有一行字母,如『PDUNHW』。怀疑是祖父年轻时用的简易密码。本工具暴力破解显示偏移 3 为『MARKET』,偏移 17 为『DARKER』。结合笔记内容判断偏移 3 是正确解读,确认这是当年供销社的货物代号本。

肆

恢复论坛加密帖

在某技术论坛找到一个 2008 年的旧帖,内容被发帖人用凯撒密码加密,只有『ZKDW LV WKH VHFUHW』一行。原帖回复里有人提示『偏移 19』,但回复已被删除。本工具暴力破解所有偏移,在偏移 19 下得到『WHAT IS THE SECRET』,成功还原帖子正文,解决了困扰多年的技术难题。

伍

核对错位密文

朋友发来一条密文『SXOHQ』,声称是『SILENT』的凯撒密码。用本工具验证:偏移 1 得『TYPMR』,偏移 2 得『UZQNS』,直到偏移 10 才得到『SXOHQ』。但『SILENT』偏移 10 应为『CSVODX』,两者不符。由此发现朋友记错了偏移值,实际是偏移 16 的『SILENT』,纠正了沟通错误。

对比矩阵

维度本工具在线凯撒工具站手工计算
暴力破解一键穷举 1-25 偏移并显示明文多数需逐条手动试偏移需纸笔逐偏移推算,耗时长
隐私纯浏览器运算,原文不上传服务器部分工具上传原文至后端解密完全离线,无网络依赖
速度毫秒级完成 25 次移位并输出单次移位约 0.5-1 秒每个偏移约 30 秒-1 分钟
输入限制无长度上限,支持任意文本部分限制 500-2000 字符无限制,但手算越长越慢
注册要求无需注册,打开即用少数需要登录或付费解锁批量无需任何注册
第二节

使用指南

Getting Started

使用步骤

  1. 1在「明文」输入框中键入待加密的文本,支持字母、数字与符号混输
  2. 2拖动或点按「移位值」滑块(1-25),右侧「密文」框实时显示移位后的结果
  3. 3勾选「暴力破解所有偏移」开关,下方列表立即列出 1-25 位全部移位结果
  4. 4点击任一结果行旁的「复制」图标,将对应密文或明文存入剪贴板

输入输出示例

输入输出说明
HELLO(移位3)KHOOR常规:典型英文单词,验证基本移位功能(3位)
HELLO(暴力破解所有偏移)偏移1: IFMMP 偏移2: JGNNQ 偏移3: KHOOR ... 偏移25: GDKKN常规:暴力破解模式,展示所有25种可能结果,用户可从中找到原文
ABC(移位25)ZAB边界:移位25接近循环边界(26字母),验证回绕逻辑正确性
(空输入)(无输出或提示“请输入文本”)边界:空输入处理,避免程序报错或产生意外结果
123!@#(移位5)123!@#边界:非字母字符(数字、符号)保持不变,验证工具是否仅处理字母
Z(移位1)A易错:末尾字母Z移位后回绕到A,用户常误以为会变成[或超出范围
aBc(移位3)dEf易错:大小写混合输入,验证工具是否保留原始大小写(而非统一转大写/小写)

常见错误对照

1.混淆移位方向:加密用左移,解密用右移

✗ 错误密文是“khoor”,想解密回“hello”,却尝试左移3位得到“ebiil”
✓ 修复密文“khoor”应右移3位(或左移23位)得到“hello”

凯撒密码加密是字母表向右循环移位(A→D),解密则反向。方向搞反会导致结果完全错误,且暴力破解时也找不到正确原文。

2.未区分大小写,导致结果乱码

✗ 错误输入“Hello World”加密,结果得到“Khoor Zruog”,但实际期望“Khoor Zruog”中的W被错误处理
✓ 修复输入“Hello World”时,工具自动保持大小写,加密后为“Khoor Zruog”

凯撒密码只变换字母,大小写应保留。若工具未处理大小写,大写字母会移出大写范围变成小写,破坏格式。

3.对非字母字符(数字、标点)也做移位

✗ 错误输入“abc123”,加密后得到“def456”
✓ 修复输入“abc123”,加密后应保留数字,结果为“def123”

凯撒密码只对英文字母移位,数字、空格、标点应原样保留。对非字母字符移位会破坏可读性,且解密后无法恢复。

4.暴力破解时忽略空格与标点,误判正确结果

✗ 错误暴力破解结果列表中有“khoor zruog”,认为它是对的,但实际原文是“hello world”
✓ 修复暴力破解应输出所有偏移结果,包括保留空格的“khoor zruog”和去掉空格的“khoorzruog”,用户需人工选择

暴力破解只是机械移位,不会自动识别语义。若结果中空格被错误处理,可能干扰判断。正确做法是检查所有偏移,看哪一组形成有意义的单词。

5.误以为凯撒密码支持中文或Unicode字符

✗ 错误输入“你好世界”,期望加密成“中好世界”或类似结果
✓ 修复凯撒密码只支持A-Z/a-z,输入中文会原样输出或报错

凯撒密码是古典单表替换密码,只对拉丁字母表循环移位。中文、日文等非字母字符无法处理,工具应提示仅支持英文字母。

6.移位量超出0-25范围,导致循环错误

✗ 错误输入移位量26,认为26=0,结果密文与原文相同
✓ 修复移位量应限制在1-25之间,26等价于0(无变化),27等价于1

凯撒密码的移位量是模26运算,26≡0,27≡1。超出范围虽可模26处理,但用户若手动输入26会误以为加密有效,实际未加密。

7.暴力破解时误以为只有一种正确结果

✗ 错误暴力破解输出25个结果,用户只看第一个就说“没有找到”
✓ 修复暴力破解应展示所有25个偏移结果,用户需逐条检查是否有可读英文

凯撒密码的暴力破解是穷举所有可能偏移,正确结果一定在列表中。若用户只扫一眼就放弃,可能漏掉正确偏移。

第三节

工作原理

How It Works

核心公式

C_i = (P_i + k) mod 26

变量说明

  • C_i密文字母在字母表中的位置(0-25)
  • P_i明文字母在字母表中的位置(0-25)
  • k移位量,整数 1 到 25

示例

明文 'HELLO',移位 k=3。H(7)→(7+3) mod 26=10→K;E(4)→7→H;L(11)→14→O;L(11)→14→O;O(14)→17→R。密文 'KHOOR'。

输入明文(字母文本)逐字符移位(偏移 1-25)暴力破解(25 种结果)展示所有密文(浏览器内完成)
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

import string def caesar_encrypt(text: str, shift: int) -> str: """移位加密,shift 1-25""" if not 1 <= shift <= 25: raise ValueError("shift must be 1-25") result = [] for ch in text: if ch.isupper(): result.append(chr((ord(ch) - ord('A') + shift) % 26 + ord('A'))) elif ch.islower(): result.append(chr((ord(ch) - ord('a') + shift) % 26 + ord('a'))) else: result.append(ch) # 非字母原样保留 return ''.join(result) # 示例 print(caesar_encrypt("Hello, World!", 3)) # 输出: Khoor, Zruog!
function caesarEncrypt(text, shift) { // shift 1-25,非字母字符保留 if (shift < 1 || shift > 25) throw new Error('shift must be 1-25'); return text.replace(/[a-zA-Z]/g, (ch) => { const base = ch >= 'a' ? 97 : 65; return String.fromCharCode((ch.charCodeAt(0) - base + shift) % 26 + base); }); } console.log(caesarEncrypt('Hello, World!', 3)); // Khoor, Zruog!
package main import ( "fmt" "unicode" ) func caesarEncrypt(text string, shift int) (string, error) { if shift < 1 || shift > 25 { return "", fmt.Errorf("shift must be 1-25") } runes := []rune(text) for i, r := range runes { switch { case 'A' <= r && r <= 'Z': runes[i] = (r-'A'+rune(shift))%26 + 'A' case 'a' <= r && r <= 'z': runes[i] = (r-'a'+rune(shift))%26 + 'a' } } return string(runes), nil } func main() { result, _ := caesarEncrypt("Hello, World!", 3) fmt.Println(result) // Khoor, Zruog! }
#!/bin/bash # 使用 tr 实现凯撒移位,仅支持字母,shift=3 caesar_encrypt() { local text="$1" local shift=${2:-3} # 大写字母平移 upper=$(echo "$text" | tr 'A-Z' "$(echo {A..Z} | tr -d ' ' | sed "s/./&/g" | cut -c$((shift+1))-26)$(echo {A..Z} | tr -d ' ' | cut -c1-$shift)") # 小写字母平移 echo "$upper" | tr 'a-z' "$(echo {a..z} | tr -d ' ' | sed "s/./&/g" | cut -c$((shift+1))-26)$(echo {a..z} | tr -d ' ' | cut -c1-$shift)" } caesar_encrypt "Hello, World!" 3 # 输出: Khoor, Zruog!
fn caesar_encrypt(text: &str, shift: u8) -> Result<String, &'static str> { if shift < 1 || shift > 25 { return Err("shift must be 1-25"); } let result: String = text.chars().map(|c| { match c { 'A'..='Z' => ((c as u8 - b'A' + shift) % 26 + b'A') as char, 'a'..='z' => ((c as u8 - b'a' + shift) % 26 + b'a') as char, _ => c, } }).collect(); Ok(result) } fn main() { println!("{}", caesar_encrypt("Hello, World!", 3).unwrap()); // Khoor, Zruog! }
第五节

常见问题

Q & A
问我有一段加密文本,怎么用这个工具知道它是不是凯撒密码?+
答

直接把文本粘贴到输入框,勾选“暴力破解所有偏移”选项。工具会一次性输出移位 1 到 25 的所有结果。浏览一遍,如果其中某一行读起来是正常的英文或中文(比如出现常见单词或通顺语句),那一行对应的偏移量就是密钥。如果 25 行全是乱码,说明原文不是凯撒密码,或者用了其他加密方式。

问为什么我设了偏移 3,加密出来的结果有些字母没变?+
答

凯撒密码只处理英文字母(A-Z 和 a-z),数字、标点、空格、中文等非字母字符会被原样保留。所以如果你输入了“hello 123”,偏移 3 后只会变成“khoor 123”,数字部分不变。这是算法本身的规则,不是工具 bug。如果想对数字也做位移,需要先转成字母或使用其他加密方式。

问暴力破解出来的结果里,哪一行才是正确的?+
答

工具会按偏移 1-25 依次列出,每行前面标注了“偏移 N:”。正确的那一行通常是唯一能读懂的。对英文原文,你会看到完整的单词和语法结构;对中文拼音,可能出现有意义的词组。如果 25 行看起来都像乱码,可能原文本身就不是标准英文或拼音,或者文本太短(比如只有 1-2 个字母),导致多行都“看起来像词”。建议用至少 5 个单词的段落来测试。

问这个工具是在我电脑上运行还是会上传到服务器?+
答

完全在浏览器本地运行。工具实现方式是 FE(前端),所有加密和解密计算都由你电脑的 JavaScript 执行,文本不会离开你的设备。即使断网,页面加载后也能正常使用。所以不用担心隐私泄露,也适合处理敏感信息。

问为什么我输入中文,加密后没变化?+
答

凯撒密码只对英文字母做循环移位。中文字符、日文、韩文等非字母字符会被原样保留。如果你输入的是“你好 world”,偏移 3 后输出会是“你好 zruog”。中文部分不动,只有英文部分变了。如果需要加密中文,建议使用支持 Unicode 的对称加密(如 AES),或者先将中文转成拼音再应用凯撒。

问我试了偏移 13,为什么结果和网上其他工具不一样?+
答

可能原因有两个:一是大小写处理方式不同——本工具严格保留原始大小写(大写变大写,小写变小写);二是非字母字符(如标点、空格)是否参与移位。本工具不处理非字母字符。建议检查你输入的内容是否包含特殊符号,或者对比时注意大小写是否一致。最可靠的办法是拿纯字母的短词(如“abc”)测试偏移 1,看结果是否为“bcd”。

问暴力破解时文本太长会不会卡死?+
答

本工具完全在浏览器本地运行,性能取决于你电脑的 CPU。对于几百个字符的短文本,暴力破解 25 种偏移基本瞬间完成。对于几万字符的长文本,可能会有几百毫秒的延迟,但不会卡死浏览器。如果遇到明显卡顿,建议分段处理或使用更专业的桌面工具。现代浏览器对 JavaScript 计算有很好的优化,一般不用担心。

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

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭