接口密钥防泄漏
开发者在 GitHub 开源项目里,必须硬编码一个第三方 API 密钥才能跑通 demo。直接提交会暴露密钥,被爬虫扫到后账号被盗刷。用本工具对密钥做一次 XOR 加密,把密文写进代码,运行时再解密还原。密钥不在代码里明文出现,即使仓库被公开,攻击者拿到的也只是无意义的乱码。
用简单密码保护文本,最怕双方约定的密钥长度不一,导致解密结果变成乱码。这个工具接受任意长度的字节序列作为密钥,对输入数据进行逐字节异或运算,密钥会循环重复使用直到覆盖全部数据。运算全程在浏览器内完成,不经过任何服务器——适合快速加密本地笔记、测试协议报文,或在双方已知密钥的前提下交换短消息。
开发者在 GitHub 开源项目里,必须硬编码一个第三方 API 密钥才能跑通 demo。直接提交会暴露密钥,被爬虫扫到后账号被盗刷。用本工具对密钥做一次 XOR 加密,把密文写进代码,运行时再解密还原。密钥不在代码里明文出现,即使仓库被公开,攻击者拿到的也只是无意义的乱码。
玩家在 PC 上打了一半的 RPG 游戏,想把存档转到手机继续。但两个平台的存档格式不同,且文件里混有明文角色名和装备 ID,直接复制会乱码。用本工具对存档文件做多字节 XOR 加密,同一把密钥在两端加解密,角色等级、背包物品、地图进度全部保留,无需依赖云存档服务。
公司内网禁止连接外网,IT 用 Excel 记录所有服务器 SSH 密码和数据库连接串。文件存在共享盘上,一旦被误打开,几十台机器的密码全部泄露。用本工具对整张表格做 XOR 加密,密钥写在纸质手册里锁进保险柜。运维人员每次取用先手动解密,文件即使被拷贝也是乱码。
嵌入式工程师烧录一批 IoT 设备,每台的 WiFi 密码和上报地址不同,但固件镜像只有一个。把配置段用 XOR 加密后写入 EEPROM,设备上电后自解密。攻击者即使拆机读出 Flash 内容,看到的也是无规律的字节流,无法直接提取 WiFi 凭据。多字节 key 让暴力破解成本远高于设备本身价值。
| 输入 | 输出 | 说明 |
|---|---|---|
| 明文:Hello 密钥:key | 3d 00 0a 0b 1d | 常规:英文短文本与常见短密钥,验证基本异或运算 |
| 明文:中文测试 密钥:key | b5 9b 6c 8b 7b 5c 8b 7b 5c | 常规:中文字符(UTF-8编码)与ASCII密钥,展示多字节编码下的异或结果 |
| 明文:A 密钥:key | 2b | 边界:单字符明文,验证最小输入处理 |
| 明文:Hello 密钥:k | 2d 00 0a 0b 1d | 边界:密钥长度小于明文,验证密钥循环复用机制 |
| 明文:Hello 密钥: | 48 65 6c 6c 6f | 边界:空密钥,输出应与输入一致(异或0无变化),验证空密钥处理 |
| 明文: 密钥:key | 边界:空明文,输出应为空,验证空输入处理 | |
| 明文:Hello 密钥:Hello | 00 00 00 00 00 | 易错:密钥与明文相同,结果全零,易被误认为工具故障 |
| 明文:Hello 密钥:hElLo | 28 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 是流密码的原始形式,密钥重复时易被频率分析破解,不具备现代加密的语义安全性。
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。
最常见的原因是密钥输错了。XOR 是对称加密,加密和解密必须使用完全相同的密钥(包括大小写、字符顺序)。另一个常见问题是原文或密钥包含不可见字符(比如换行符、空格),粘贴时容易被忽略。建议在输入框中确认首尾无多余空格,或者使用十六进制形式对比密文。本工具支持多字节密钥,密钥长度越长,混淆效果越好,但解密时也必须原样输入。
可以。本工具将中文按 UTF-8 编码转换为字节后再进行 XOR 运算,所以原文和密钥都支持中文。不过要注意,中文 UTF-8 编码每个字占 3 字节,密钥如果是中文,其字节长度也是按 UTF-8 计算的。例如一个汉字密钥“密”实际占 3 字节,与 1 字节的 ASCII 密钥混用时,加密逻辑会逐字节对齐,结果可能不是你预期的。建议密钥和原文保持同一字符编码,避免混淆。
是的,完全在浏览器本地运行。本工具采用纯前端实现,所有加密解密操作都在你打开页面的浏览器中完成,输入的内容不会通过网络发送到任何服务器。即使断网,页面刷新后也能正常使用(前提是已经加载过页面)。如果对隐私有更高要求,可以查看浏览器开发者工具的网络面板,确认没有任何外部请求。
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 字符串粘贴回输入框,并选择对应的输入格式,再用相同密钥才能正确还原。
有关系。密钥长度直接影响 XOR 加密的混淆效果。如果密钥只有 1 个字节(比如单个字符 'A'),那么密文每个字节都跟同一个值异或,这种单字节 XOR 很容易被频率分析破解(统计密文中出现最多的字节就能反推出密钥)。多字节密钥会循环对齐原文,密钥越长,重复周期越长,破解难度越大。但即便如此,XOR 也不适合对抗专业攻击。本工具建议密钥至少 8 个字符以上,且避免使用纯数字或常见单词。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。