文字加密

凯撒/Vigenere/倒序/替换

416 次访问

趣味加密合集

10 种经典算法 · 仅供趣味 / 防偷瞄
⚠ 注意:本工具的算法均为趣味 / 弱加密(可被秒破),不可用于敏感数据。如需真正的加密,请使用: AES-GCM · ChaCha20 · RSA · HMAC · JWT
明文
密文

算法详解

· 凯撒(Caesar):26 字母循环移位 N 位,古罗马常用。易破(穷举 25 次即可)

· ROT13:移位 13(加解密同一算法)。论坛防剧透专用

· Atbash:A↔Z, B↔Y 镜像替换。希伯来语古密码

· 栅栏(Rail Fence):把文字按"之"字形分 N 排重写。古代军用

· 维吉尼亚(Vigenère):用关键词循环作位移表。19 世纪前被誉为"不可破",频率分析后失守

· 仿射(Affine):y = (a·x + b) mod 26,需 a 与 26 互质

· XOR + Base64:每字节与 key 字节异或后 Base64 编码。简易但可逆

· 倒序 / Unicode / Emoji:纯娱乐 / 装饰,无安全性

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

🔐

密码备忘传输

用户需要把一串包含大小写字母、数字和特殊符号的复杂密码发给家人,但直接发微信或短信有被聊天记录泄露的风险。使用本工具的凯撒或替换加密,将密码原文变成一串无意义字符,接收方用约定密钥还原,即使聊天记录被截取,攻击者也看不出这是密码。

📝

日记私密备份

习惯用云笔记写日记的用户,担心平台内部人员或后台漏洞导致私密内容泄露。将整篇日记用 Vigenere 加密后存入云笔记,密钥仅自己掌握。即使云笔记账号被盗,对方看到的也是一堆乱码,日记隐私得到双重保护。

🎮

游戏剧情谜题

跑团或解谜游戏主持人需要设计一道需要玩家解码才能推进剧情的谜题。用倒序加密将关键线索(如“地下室第三块砖下”)反转成“下砖块三第室下地”,玩家必须手动或借助工具反向操作才能获取信息,增加游戏互动感和解谜乐趣。

💼

商务报价加密

销售人员在出差途中需要将一份含敏感报价的 Excel 摘要通过邮件发给同事,但公司邮箱可能被第三方监控。使用替换加密将报价数字和客户名称按自定义映射表替换,接收方凭映射表解码。即使邮件被拦截,对手看到的也是经过混淆的假数据。

🎓

教学演示加密

计算机或密码学教师在课堂上讲解古典密码原理时,需要现场演示凯撒移位、Vigenere 加解密过程。学生输入明文和密钥,立即看到加密后的密文,并可以反向验证解密结果。直观的即时反馈帮助学生理解算法逻辑,无需手动计算。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A传统方法
数据隐私纯浏览器,零上传上传到服务器依赖工作人员
处理速度1 秒内5-10 秒数小时
离线可用完全离线需要网络不适用
算法支持凯撒/Vigenere/倒序/替换仅凯撒手工替换
操作门槛无需安装,打开即用需注册账号需专业知识
批量处理单次文本单次文本可处理大量文档

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
Hello WorldKhoor Zruog典型场景:凯撒密码,移位3位
Hello WorldRovvy Gybvn典型场景:维吉尼亚密码,密钥为key
Hello WorlddlroW olleH典型场景:倒序加密,字符串反转
Hello WorldHxllo Wxrld典型场景:替换加密,e→x,o→x
边界case:空字符串输入,工具应返回空
1234512345边界case:纯数字,凯撒/倒序/替换无变化
Hello WorldKhoor Zruog易错case:用户未区分大小写,凯撒保持大小写

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 凯撒位移数用了非数字字符

错误
明文:hello,位移:3a
修复
明文:hello,位移:3

凯撒密码的位移参数必须是整数(0-25),输入字母或符号会导致程序无法解析位移量,直接报错或使用默认值0。

2. Vigenere 密钥包含非字母字符

错误
明文:attack,密钥:key123
修复
明文:attack,密钥:key

Vigenere 密码只处理 A-Z 字母,密钥中的数字或符号会被忽略或导致加密结果与预期不一致。密钥应全为字母。

3. 替换密码的映射表不完整或不对称

错误
映射:a->x, b->y(只定义了2个字母)
修复
映射:a->x, b->y, c->z, d->w, ...(26个字母全定义)

替换密码需要为每个字母定义唯一映射。缺字母时,未定义字母会原样保留,导致密文部分未加密,破坏密码强度。

4. 倒序加密后直接复制到纯文本环境丢失格式

错误
在工具里看到结果带换行,直接粘贴到记事本变成一行
修复
使用工具提供的「复制结果」按钮,或手动检查粘贴后是否保留了换行/空格

倒序加密会反转整段文本(含换行符),但很多聊天框/输入框会自动合并换行,导致解密时顺序错乱。

5. 用凯撒加密中文文本

错误
明文:你好世界,位移:3
修复
明文:hello world,位移:3

凯撒密码只作用于英文字母(A-Z),中文字符不会被位移,加密结果与原文完全相同,等于没加密。

6. 加密后直接丢弃原始密钥

错误
用 Vigenere 加密后,密钥「mykey」没保存就关闭页面
修复
加密前先复制密钥到安全位置(密码管理器/笔记),再执行加密

Vigenere 和替换密码的密钥是解密唯一凭证。丢失密钥意味着密文永久不可解密,工具不存储任何密钥。

7. 把加密结果中的特殊字符误认为乱码

错误
看到密文里有「+」「/」「=」就以为工具出错了
修复
加密结果可能包含 Base64 编码后的字符(如 + / =),这是正常输出

部分加密算法(如 Base64 编码后再加密)会产生非字母字符,这些字符是密文的一部分,不是错误。

8. 加密后立即用同一工具解密但忘记切换模式

错误
加密完文本后,直接点「解密」按钮,但工具默认还是加密模式
修复
先确认工具当前处于「解密」模式,再粘贴密文和密钥

很多加密工具加密/解密是独立模式,忘记切换会导致用加密逻辑处理密文,输出无意义结果。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

C = (P + K) mod 26

变量说明

  • C — 加密后的字母序号(0-25)
  • P — 明文字母序号(0-25)
  • K — 凯撒移位密钥(整数,1-25)

示例

明文 'HELLO',凯撒密钥 K=3。H(7)→K(10),E(4)→H(7),L(11)→O(14),L(11)→O(14),O(14)→R(17)。加密结果:'KHOOR'。

适用范围

仅适用于凯撒密码(单表替换),密钥 K 为 1-25 整数。不适用于 Vigenere(需关键词)或倒序/替换算法。

原理图

原始文本明文算法选择凯撒 / Vigenere倒序 / 替换加密结果密文加密文本密文算法选择(与加密一致)解密结果明文所有运算在浏览器内完成,数据不上传服务器实现方式:纯前端(FE)
用户输入 本地处理 输出结果 隐私说明

开发者集成

3 种主流语言 · 复制即用

import string

# 凯撒密码:移位 3
plain = "hello, world"
shift = 3
lower = string.ascii_lowercase
cipher = ''.join(
    lower[(lower.index(c) + shift) % 26] if c in lower else c
    for c in plain
)
print(cipher)  # khoor, zruog

# 倒序
reversed_text = plain[::-1]
print(reversed_text)  # dlrow ,olleh

# 简单替换:a→x, b→y, c→z ...
table = str.maketrans(string.ascii_lowercase, string.ascii_lowercase[23:] + string.ascii_lowercase[:3])
substituted = plain.translate(table)
print(substituted)  # ebii1, xli2
package main

import (
	"fmt"
	"strings"
	"unicode"
)

// 凯撒移位(仅小写字母)
func caesar(s string, shift int) string {
	var b strings.Builder
	for _, r := range s {
		if unicode.IsLower(r) {
			r = rune((int(r-'a')+shift)%26 + 'a')
		}
		b.WriteRune(r)
	}
	return b.String()
}

func main() {
	plain := "hello, world"
	fmt.Println(caesar(plain, 3)) // khoor, zruog

	// 倒序
	runes := []rune(plain)
	for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
		runes[i], runes[j] = runes[j], runes[i]
	}
	fmt.Println(string(runes)) // dlrow ,olleh
}
// 凯撒密码(仅小写字母)
function caesar(str, shift) {
  return str.replace(/[a-z]/g, ch =>
    String.fromCharCode(((ch.charCodeAt(0) - 97 + shift) % 26) + 97)
  );
}

const plain = "hello, world";
console.log(caesar(plain, 3)); // khoor, zruog

// 倒序
console.log([...plain].reverse().join('')); // dlrow ,olleh

// Vigenere 加密(仅小写字母)
function vigenereEncrypt(plain, key) {
  let result = '';
  for (let i = 0, j = 0; i < plain.length; i++) {
    const c = plain[i];
    if (/[a-z]/.test(c)) {
      const shift = key[j % key.length].charCodeAt(0) - 97;
      result += String.fromCharCode((c.charCodeAt(0) - 97 + shift) % 26 + 97);
      j++;
    } else {
      result += c;
    }
  }
  return result;
}
console.log(vigenereEncrypt(plain, 'key')); // riovu, yqznv

常见问题

8 个高频疑问

加密后的文字怎么解密?
本工具默认只提供加密,不提供解密功能。但解密方法完全取决于你选择的加密算法:凯撒密码把字母按固定位数移位,反向移位就能解密;Vigenere 密码需要知道密钥,用密钥反向运算即可;倒序密码把字符串反转即可还原;替换密码需要知道替换映射表才能逆向。建议加密时自己记录算法类型、移位位数、密钥或替换表,解密时用对应算法的解密工具或手动计算。
为什么我用凯撒加密后,数字和标点符号没变?
凯撒密码只对英文字母(A-Z, a-z)进行移位,数字、标点、空格、中文等非字母字符会被保留原样不处理。这是凯撒密码的通用实现方式,并非本工具有问题。如果需要加密数字,可以先用替换密码自定义数字的映射,或者使用 Vigenere 密码(它对字母加密,数字同样不处理)。
Vigenere 密码的密钥有什么限制?能是中文或数字吗?
Vigenere 密码的密钥只支持英文字母(A-Z, a-z),不区分大小写。如果输入数字或中文作为密钥,工具会提示无效。密钥长度不限,但实际加密效果取决于密钥与明文长度的循环匹配:密钥越长,破解难度越高。建议使用至少 8 位以上的随机字母作为密钥,避免使用单词或简单模式。
倒序加密后文字顺序完全反了,想恢复怎么办?
倒序加密是纯反转字符串顺序,比如 'abc123' 加密成 '321cba'。解密方法完全相同:再次把加密结果输入本工具,选择倒序模式,点加密即可还原原文。因为倒序是对称操作,加密一次是反转,加密两次就回到原文。这是最简单也最容易破解的加密方式,适合临时隐藏短文本内容。
替换密码怎么自定义映射?加密后能保证唯一解密吗?
替换密码需要你提供映射规则,通常格式为 'A=Z,B=Y,C=X,...',即明文每个字母对应哪个密文字母。映射必须是一对一的(双射),否则解密时一个密文字母可能对应多个明文字母,无法还原。工具不自动生成映射表,需要用户自己设计。建议保存好映射关系,丢失后只能通过频率分析暴力破解。
这个工具加密后的结果安全吗?能被破解吗?
本工具提供的四种加密算法都属于古典密码,在现代计算机面前安全性很低。凯撒密码只有 25 种移位可能,暴力破解秒出结果;倒序一眼就能看出规律;替换密码可通过字母频率分析几分钟破解;Vigenere 密码稍强但 Kasiski 检验法也能快速破解。这些算法适合学习密码学原理、隐藏短文本不被普通用户直接看到,不适合保护敏感信息如密码、银行卡号等。
加密后文本变长了,为什么?
加密后文本长度不会超过原文长度(倒序和凯撒完全不变,Vigenere 和替换也不增加字符),但如果你看到变长,可能是因为原文含空格或换行,加密后这些字符被保留,视觉上感觉变长了。另外,如果加密结果包含特殊字符,在某些显示环境下可能被转义或格式化,造成长度错觉。可以在工具输出框直接复制文本到记事本检查实际字符数。
手机浏览器上能用吗?和电脑上用效果一样吗?
完全能用,且效果一致。本工具是纯前端实现,所有加密计算都在浏览器内完成,不依赖后端。手机浏览器(Chrome/Safari/Edge)和电脑浏览器执行的是同一套 JavaScript 代码,输入输出完全一致。唯一区别是手机屏幕较小,建议横屏使用或放大页面,输入框和按钮布局会自动适配。
选择 打开 +新窗口 esc关闭