加密论坛签名档
程序员小陈在技术论坛发帖,想留个联系方式又怕被爬虫抓走。他把自己邮箱用凯撒密码偏移 13 位,再插入两个随机字母混淆,生成一串密文放在签名档。同好看到后手动解码联系,而爬虫抓到的只是一堆乱码。本工具支持自定义偏移量和随机填充,能抵抗批量扫描。
把明文打乱成密文,再按约定规则还原——凯撒、维吉尼亚、倒序、替换四种古典加密法,覆盖从简单移位到多表替换的常见场景。输入文本,选算法、设密钥(凯撒移位量、维吉尼亚密码词),即时输出密文。算法逻辑在浏览器本地执行,原文不会离开设备。适合在公开群聊中隐藏消息、写谜题线索,或教学演示加密原理——不适用于需要真正安全强度的场景。
程序员小陈在技术论坛发帖,想留个联系方式又怕被爬虫抓走。他把自己邮箱用凯撒密码偏移 13 位,再插入两个随机字母混淆,生成一串密文放在签名档。同好看到后手动解码联系,而爬虫抓到的只是一堆乱码。本工具支持自定义偏移量和随机填充,能抵抗批量扫描。
游戏公会新成员入群,群主不想公开验证码,怕被外挂脚本抢名额。群主用维吉尼亚密码把验证词「风暴之眼」加密,密钥提前私聊发给老成员。新人进群后,老成员根据密钥解码核对,全程密文在公屏流通。本工具支持自定义密钥,加密后密文长度与明文相同,不易被察觉。
自由职业者老周用记事本存了二十多个平台密码,担心哪天电脑被借走。他把密码本整段复制进工具,选「替换」模式把字母表循环右移 5 位,数字替换成对应中文大写。存盘后文件看起来像乱码,即使被打开也读不出真实内容。本工具支持字母、数字、符号三种替换表独立设置,可组合加密。
淘宝店主每天要扔掉几十个快递盒,面单上姓名电话清晰可见。她用倒序功能把收件人姓名和手机号反转,再替换掉中间 4 位数字,打印出新的小条贴在面单上覆盖原信息。快递员扫码前撕掉小条即可,本工具支持批量粘贴多行数据,一次处理一整页。
大学生小赵用 Notion 记课堂笔记,偶尔会夹带室友的八卦和教授评价。他不想整篇加密,只把敏感段落用维吉尼亚密码加密,密钥设为自己生日。别人看笔记时,那几行像乱码,他自己解码后秒懂。本工具支持只加密选中文本,不破坏整篇格式,解码后直接替换回原文。
| 维度 | 本工具 | 在线加密站 | 手工/纸质方式 |
|---|---|---|---|
| 隐私 | 纯浏览器处理,明文不上传 | 需上传至服务器加密 | 完全离线,无数字痕迹 |
| 离线可用 | 支持(纯前端实现) | 依赖网络连接 | 完全离线 |
| 算法选择 | 凯撒/Vigenere/倒序/替换共4种 | 通常仅提供凯撒或简单替换 | 仅限手工能算的凯撒或倒序 |
| 批量处理 | 不支持(单次单段文本) | 部分支持批量上传文件 | 逐字手工转换,极慢 |
| 大小限制 | 受浏览器内存限制(通常数MB内) | 通常有上传文件大小限制(如10MB) | 无理论限制,但人工处理极慢 |
| 收费 | 免费 | 部分功能需付费/注册 | 仅需纸笔,零成本 |
| 注册 | 无需注册 | 部分需注册账号 | 无需注册 |
| 输入 | 输出 | 说明 |
|---|---|---|
| Hello World!(凯撒,偏移3) | Khoor Zruog! | 常规:带空格和标点的英文短语,验证凯撒移位是否保留非字母字符 |
| abc(倒序) | cba | 常规:简单英文单词倒序,验证基础反转逻辑 |
| (空输入) | (空) | 边界:空输入的处理,部分工具可能报错或返回空串 |
| 12345(凯撒,偏移26) | 12345 | 边界:纯数字输入,凯撒偏移为字母表长度倍数时,数字原样输出 |
| HELLO(凯撒,偏移0) | HELLO | 边界:偏移0时,所有字母保持不变,验证零偏移是否被正确处理 |
| aBcDeF(替换,a→z, b→y, c→x) | zXyWvU | 易错:大小写混合输入,替换规则是否区分大小写(此例按大小写敏感处理) |
| Hello World!(Vigenere,密钥key) | Rijvs Uyvjn! | 易错:Vigenere密钥循环使用,且非字母字符不参与加密,验证密钥对齐和标点保留 |
1.凯撒移位超出字母表范围
明文 'xyz',移位 5,得到 'cde'(以为自动循环)明文 'xyz',移位 5,得到 'cde'(正确循环)凯撒密码在字母表末尾循环时,z 后接 a,但部分用户误以为超出范围会报错或截断,实际算法已处理环绕。
2.Vigenere 密钥包含非字母字符
密钥 'hello!',加密 'world',结果乱码密钥 'hello',加密 'world',得到 'dscwr'Vigenere 仅处理 A-Z 字母,非字母字符在密钥中会导致偏移计算错误,工具应自动忽略或报错。
3.倒序加密混淆了空格处理
明文 'hello world',倒序后得到 'dlrow olleh'(保留空格位置)明文 'hello world',倒序后得到 'dlrow olleh'(字符级倒序,空格参与)倒序加密默认按字符序列反转,空格视为普通字符,部分用户误以为只反转单词顺序。
4.替换加密使用了重复映射
映射表 'a->b, b->c, a->d',加密 'ab' 得到 'bc'(后覆盖前)映射表 'a->b, b->c',加密 'ab' 得到 'bc'替换加密要求映射一一对应,重复源字母会导致不可预测结果,工具应检测冲突或提示用户。
5.大小写未统一导致解密失败
密文 'HELLO' 用密钥 'world' 解密,结果乱码密文 'hello' 用密钥 'world' 解密,得到 'dscwr'Vigenere 和凯撒通常默认处理大写或小写,混用会导致偏移计算错误,建议先统一大小写。
6.替换加密未处理未映射字符
映射表 'a->b',加密 'cat' 得到 'cbt'(c 和 t 原样保留)映射表 'a->b, c->d, t->u',加密 'cat' 得到 'dbu'替换加密中未映射的字符默认原样输出,用户可能误以为会报错或自动跳过,导致密文不完整。
C_i = (P_i + K_{j \bmod m}) \bmod 26
C_i密文第 i 个字母的序号 (0-25)P_i明文第 i 个字母的序号 (0-25)K_j密钥第 j 个字母的序号 (0-25)m密钥长度(字母个数)明文 HELLO (7,4,11,11,14),密钥 KEY (10,4,24)。C_1=(7+10) mod 26=17→R;C_2=(4+4) mod 26=8→I;C_3=(11+24) mod 26=9→J;C_4=(11+10) mod 26=21→V;C_5=(14+4) mod 26=18→S。密文:RIJVS。
5 种主流语言实现,复制即用:
import base64
# 凯撒加密:移位 3
plain = "HELLO"
shift = 3
enc = ''.join(chr((ord(c) - 65 + shift) % 26 + 65) if c.isupper() else c for c in plain)
print(enc) # KHOOR
# 倒序
print(plain[::-1]) # OLLEH
# Base64 替换(非标准替换,仅演示字符替换逻辑)
print(base64.b64encode(plain.encode()).decode()) # SEVMTE8=// 凯撒加密:移位 3
const plain = "HELLO";
const shift = 3;
const enc = plain.split('').map(c => {
const code = c.charCodeAt(0);
if (code >= 65 && code <= 90) return String.fromCharCode((code - 65 + shift) % 26 + 65);
return c;
}).join('');
console.log(enc); // KHOOR
// 倒序
console.log(plain.split('').reverse().join('')); // OLLEH
// 替换(ROT13)
const rot13 = plain.replace(/[A-Z]/g, c => String.fromCharCode((c.charCodeAt(0) - 65 + 13) % 26 + 65));
console.log(rot13); // URYYBpackage main
import "fmt"
func caesar(s string, shift int) string {
b := []byte(s)
for i, c := range b {
if c >= 'A' && c <= 'Z' {
b[i] = (c-'A'+byte(shift))%26 + 'A'
}
}
return string(b)
}
func reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
func main() {
plain := "HELLO"
fmt.Println(caesar(plain, 3)) // KHOOR
fmt.Println(reverse(plain)) // OLLEH
}# 凯撒加密:移位 3(仅大写字母)
plain="HELLO"
echo "$plain" | tr 'A-Z' 'D-ZA-C' # KHOOR
# 倒序
echo "$plain" | rev # OLLEH
# ROT13 替换
echo "$plain" | tr 'A-Z' 'N-ZA-M' # URYYB<?php
$plain = "HELLO";
// 凯撒加密:移位 3
function caesar($s, $shift) {
$result = '';
foreach (str_split($s) as $c) {
if (ctype_upper($c)) {
$result .= chr((ord($c) - 65 + $shift) % 26 + 65);
} else {
$result .= $c;
}
}
return $result;
}
echo caesar($plain, 3) . "\n"; // KHOOR
// 倒序
echo strrev($plain) . "\n"; // OLLEH
// 替换(ROT13)
echo str_rot13($plain) . "\n"; // URYYB凯撒密码是替换密码的一种特例——它把字母表循环移位固定位数(比如移3位,A变D),所以规律是全局统一的,很容易被频率分析破解。替换密码则允许你自定义一张任意映射表(A→X、B→M、C→P……),没有固定规律,强度比凯撒高很多。本工具两种都支持:想快速演示用凯撒,想认真加密一段文字用替换(自己设计映射表)。
密钥就是加密时用的“口令”,比如密钥是“KEY”,它会循环对应每个明文字符:第一个字母用K对应的移位量,第二个用E,第三个用Y,第四个又回到K。密钥长度越长、越随机,加密强度越高。本工具密钥只接受英文字母,建议用8位以上的随机单词或短语,别用“abc”这种短密钥——破解难度会大幅降低。
本工具的凯撒、Vigenere、替换三种算法都只对英文字母(A-Z a-z)做移位或映射,中文、数字、标点符号会被原样保留。如果解密出来是乱码,大概率是加密时把中文也当成了字母处理(比如用工具对中文做了替换),解密时却用了纯字母规则。建议加密前确认原文只包含英文字母,或使用“倒序”功能——它对中英文都有效。
严格说倒序不是密码学意义上的加密(没有密钥),但它是一种快速混淆手段,适合防偷瞄或临时隐藏内容。比如你在公共场合输入密码,旁边的人看到的是倒序字符串,不容易一眼记住。本工具把它归入“文字加密”模块,是因为它和凯撒/Vigenere/替换一样,能对文本做可逆变换,且不需要任何密钥——适合对安全性要求不高、但需要快速隐藏的场景。
替换密码的强度取决于映射表是否随机且完整。安全做法:把26个字母打乱后一一对应(比如A→X、B→M……),不要留字母不映射,也不要出现多个字母映射到同一个密文字母(否则解密会冲突)。本工具支持你手动编辑映射表,也提供“随机生成”按钮——点击后会生成一个无重复的26字母全排列,直接使用即可。解密时用反向映射表(把密文映射回原文)。
本工具的所有算法(凯撒、Vigenere、替换、倒序)都是无损可逆的,只要密钥或映射表和加密时完全一致,解密结果100%恢复原文。唯一丢数据的风险是:加密时用了替换密码且映射表设计错误(比如A映射到B、B也映射到B),此时两个不同字母变成同一个密文字母,解密时无法区分。建议生成映射表后先加密一小段测试文字,再用解密功能验证能恢复,再正式使用。
不会。本工具是纯前端实现(FE),所有加密/解密操作都在浏览器本地完成,文字不会被发送到任何服务器。即使断网也能用。你可以放心处理敏感信息(比如个人密码提示、私密消息),不用担心数据被中间截获或服务器留存。如果还是不放心,加密后手动复制结果、关闭页面再解密,浏览器本地缓存也不会保存。
本工具对输入长度没有硬性限制(理论上支持几万字),但浏览器在处理超长文本时,结果区域可能因渲染性能问题出现滚动卡顿或显示不全。如果发现结果被截断,先检查是否复制时只选中了前半段;如果确定是工具显示问题,可以尝试分批次加密(比如每5000字一段),或者用浏览器的“全选+复制”快捷键(Ctrl+A / Cmd+A)把整个结果框内容复制到记事本里查看。
凯撒密码的移位量只有25种可能(1-25),暴力破解非常容易。如果非要选一个,避开最常见的3(Caesar cipher默认)、13(ROT13)、25(反向),选一个7或19之类的中间值会稍微难猜一点。但说实话,凯撒密码在现代计算机面前几毫秒就能穷举完,它只适合教学演示或防普通人偷看,真正需要安全加密建议用替换密码或Vigenere。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。