编码加密 · 对称加密

XOR 加密

简易异或/多字节 key

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 104 次使用
明文 ⊕ 密钥 ↔ 密文 · XOR 自反 · 全本地
密钥 密钥 0 字节
输入 输出
输入 plain · UTF-8
0 字节
输出 hexadecimal
0 字节
XOR 自反 · C = P ⊕ K,同密钥再异或即 P = C ⊕ K
逐字节byte-by-byte · P ⊕ K = C
输入内容后在此显示每个字节的异或对照(明文字节 ⊕ 密钥字节 = 输出字节)。
示例:点 ABC ⊕ "K" · ⊕ 0x00 = 原文 · 循环密钥 "AB"
就绪 · 输入内容与密钥即时异或
第一节

关于本工具

About

用简单密码保护文本,最怕双方约定的密钥长度不一,导致解密结果变成乱码。这个工具接受任意长度的字节序列作为密钥,对输入数据进行逐字节异或运算,密钥会循环重复使用直到覆盖全部数据。运算全程在浏览器内完成,不经过任何服务器——适合快速加密本地笔记、测试协议报文,或在双方已知密钥的前提下交换短消息。

使用场景

接口密钥防泄漏

开发者在 GitHub 开源项目里,必须硬编码一个第三方 API 密钥才能跑通 demo。直接提交会暴露密钥,被爬虫扫到后账号被盗刷。用本工具对密钥做一次 XOR 加密,把密文写进代码,运行时再解密还原。密钥不在代码里明文出现,即使仓库被公开,攻击者拿到的也只是无意义的乱码。

游戏存档互通

玩家在 PC 上打了一半的 RPG 游戏,想把存档转到手机继续。但两个平台的存档格式不同,且文件里混有明文角色名和装备 ID,直接复制会乱码。用本工具对存档文件做多字节 XOR 加密,同一把密钥在两端加解密,角色等级、背包物品、地图进度全部保留,无需依赖云存档服务。

离线密码本备份

公司内网禁止连接外网,IT 用 Excel 记录所有服务器 SSH 密码和数据库连接串。文件存在共享盘上,一旦被误打开,几十台机器的密码全部泄露。用本工具对整张表格做 XOR 加密,密钥写在纸质手册里锁进保险柜。运维人员每次取用先手动解密,文件即使被拷贝也是乱码。

固件配置参数保护

嵌入式工程师烧录一批 IoT 设备,每台的 WiFi 密码和上报地址不同,但固件镜像只有一个。把配置段用 XOR 加密后写入 EEPROM,设备上电后自解密。攻击者即使拆机读出 Flash 内容,看到的也是无规律的字节流,无法直接提取 WiFi 凭据。多字节 key 让暴力破解成本远高于设备本身价值。

第二节

使用指南

Getting Started

使用步骤

  1. 1在「明文」框粘贴待加密文本(支持 UTF-8 字符),右侧「密文」框同步显示加密结果
  2. 2在「密钥」框输入任意长度字符串(如 abc123),密钥变化时密文立即重新计算
  3. 3点击「加密」按钮将当前明文与密钥组合输出为 Base64 编码的密文
  4. 4点击「解密」按钮将密文框内容还原为原始明文,密钥不一致时输出乱码

输入输出示例

输入输出说明
明文:Hello 密钥:key3d 00 0a 0b 1d常规:英文短文本与常见短密钥,验证基本异或运算
明文:中文测试 密钥:keyb5 9b 6c 8b 7b 5c 8b 7b 5c常规:中文字符(UTF-8编码)与ASCII密钥,展示多字节编码下的异或结果
明文:A 密钥:key2b边界:单字符明文,验证最小输入处理
明文:Hello 密钥:k2d 00 0a 0b 1d边界:密钥长度小于明文,验证密钥循环复用机制
明文:Hello 密钥:48 65 6c 6c 6f边界:空密钥,输出应与输入一致(异或0无变化),验证空密钥处理
明文: 密钥:key边界:空明文,输出应为空,验证空输入处理
明文:Hello 密钥:Hello00 00 00 00 00易错:密钥与明文相同,结果全零,易被误认为工具故障
明文:Hello 密钥:hElLo28 00 0a 0b 1d易错:密钥大小写敏感,与全小写密钥结果不同,提醒用户注意大小写

常见错误对照

1.密钥长度与明文不匹配时截断或循环

✗ 错误明文 "hello",密钥 "ab",期望逐字节异或后长度不变
✓ 修复密钥 "ab" 会循环使用:a^h, b^e, a^l, b^l, a^o,结果仍为 5 字节

多字节 XOR 密钥按字节循环对齐明文长度,不是截断或补零,这是算法定义的行为。

2.混淆异或与加法/减法加密

✗ 错误用异或加密后,再用异或解密时误用加法或减法运算
✓ 修复加密与解密使用完全相同的异或操作:c = p ^ k; p = c ^ k

异或是自逆运算(a ^ b ^ b = a),不需要加/减,这是数学性质决定的。

3.密钥包含不可见控制字符导致结果异常

✗ 错误密钥字符串中混有回车符 \r 或换行符 \n,肉眼看不出来
✓ 修复使用纯可见 ASCII 字符作为密钥,或确认密钥字符串不含空白控制符

控制字符(0x00-0x1F)在输入/复制时容易被忽略,但参与异或运算后会产生不可打印结果。

4.将异或结果直接视为文本输出

✗ 错误加密后得到字节 0x1A 0x02 0xFF,直接当作字符串显示为乱码
✓ 修复将结果编码为十六进制字符串(如 "1A02FF")或 Base64 再展示

异或结果可能包含不可打印或控制字符,直接文本输出会丢失数据或显示异常。

5.密钥长度为零(空密钥)

✗ 错误不输入密钥或输入空字符串,工具报错或输出与明文相同
✓ 修复必须提供至少 1 字节的密钥,空密钥无意义且违反异或加密定义

空密钥导致循环长度为 0,数学上无法执行异或运算,多数实现会拒绝或返回原明文。

6.明文与密钥使用不同字符编码

✗ 错误明文用 UTF-8 编码,密钥用 GBK 编码,异或时字节对不齐
✓ 修复确保明文和密钥在异或前使用同一编码(如 UTF-8)转换为字节序列

不同编码下同一字符的字节表示不同,异或结果无法正确解密。

7.误以为 XOR 加密是安全的密码学加密

✗ 错误用简单 XOR 加密保护密码或敏感数据,认为无法破解
✓ 修复仅用于混淆/非安全场景(如隐藏传输中的明文特征),不用于密码存储或通信加密

XOR 是流密码的原始形式,密钥重复时易被频率分析破解,不具备现代加密的语义安全性。

第三节

工作原理

How It Works

核心公式

C_i = P_i ⊕ K_{i mod L}

变量说明

  • C_i第 i 字节的密文
  • P_i第 i 字节的明文
  • K密钥字节数组
  • L密钥长度(字节数)
  • 按位异或运算

示例

明文 'AB'(十六进制 0x41 0x42)、密钥 'K'(0x4B):C_0 = 0x41 ⊕ 0x4B = 0x0A;C_1 = 0x42 ⊕ 0x4B = 0x09。密文为 0x0A 0x09。

输入明文 + 密钥(多字节 key)逐字节 XOR明文[i] ⊕ 密钥[i%len]密钥循环重复输出密文(Hex)或 Base64解密:相同密钥再次 XOR 还原
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
为什么我用 XOR 加密后,再解密出来的结果和原文不一样?

最常见的原因是密钥输错了。XOR 是对称加密,加密和解密必须使用完全相同的密钥(包括大小写、字符顺序)。另一个常见问题是原文或密钥包含不可见字符(比如换行符、空格),粘贴时容易被忽略。建议在输入框中确认首尾无多余空格,或者使用十六进制形式对比密文。本工具支持多字节密钥,密钥长度越长,混淆效果越好,但解密时也必须原样输入。

XOR 加密能加密中文吗?密钥用中文行不行?

可以。本工具将中文按 UTF-8 编码转换为字节后再进行 XOR 运算,所以原文和密钥都支持中文。不过要注意,中文 UTF-8 编码每个字占 3 字节,密钥如果是中文,其字节长度也是按 UTF-8 计算的。例如一个汉字密钥“密”实际占 3 字节,与 1 字节的 ASCII 密钥混用时,加密逻辑会逐字节对齐,结果可能不是你预期的。建议密钥和原文保持同一字符编码,避免混淆。

这个工具是纯本地运行的吗?我的数据会不会传到服务器?

是的,完全在浏览器本地运行。本工具采用纯前端实现,所有加密解密操作都在你打开页面的浏览器中完成,输入的内容不会通过网络发送到任何服务器。即使断网,页面刷新后也能正常使用(前提是已经加载过页面)。如果对隐私有更高要求,可以查看浏览器开发者工具的网络面板,确认没有任何外部请求。

XOR 加密安全吗?能用来保护密码吗?

XOR 是一种非常基础的对称加密,不是现代加密标准(如 AES)。它的安全性完全取决于密钥的随机性和长度:如果密钥和原文一样长且完全随机(一次一密),理论上不可破解;但实际中密钥往往较短或可猜测,攻击者可以通过已知明文攻击或频率分析快速还原密钥。因此,XOR 适合临时混淆、数据传输前的简单掩码、或学习加密原理,不建议用于保护密码、银行卡号等敏感信息。如果需要高安全性,请使用 AES-256 等经过验证的算法。

能不能给个例子,让我确认自己操作对不对?

可以。假设原文是“abc”,密钥是“key”,加密过程:a(0x61) XOR k(0x6B) = 0x0A,b(0x62) XOR e(0x65) = 0x07,c(0x63) XOR y(0x79) = 0x1A,得到密文是三个字节 0x0A 0x07 0x1A(不可打印字符)。把这段密文(十六进制形式)和相同密钥“key”再输入一次,解密后应还原为“abc”。如果结果不对,请检查是否选了错误的输出格式(文本 vs 十六进制),或密钥输入有差异。

为什么加密出来的结果是一堆乱码?怎么保存?

XOR 加密后的结果通常是不可打印的二进制字节,直接以文本形式显示就会变成乱码。这是正常现象。本工具提供两种输出方式:十六进制(如 0A071A)和 Base64(如 CgcZ)。推荐使用十六进制或 Base64 格式保存密文,复制时不会丢失数据。解密时,必须将保存的十六进制或 Base64 字符串粘贴回输入框,并选择对应的输入格式,再用相同密钥才能正确还原。

密钥长度和加密强度有关系吗?用 1 个字符的密钥行不行?

有关系。密钥长度直接影响 XOR 加密的混淆效果。如果密钥只有 1 个字节(比如单个字符 'A'),那么密文每个字节都跟同一个值异或,这种单字节 XOR 很容易被频率分析破解(统计密文中出现最多的字节就能反推出密钥)。多字节密钥会循环对齐原文,密钥越长,重复周期越长,破解难度越大。但即便如此,XOR 也不适合对抗专业攻击。本工具建议密钥至少 8 个字符以上,且避免使用纯数字或常见单词。

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

选择 打开 +新窗口 esc关闭