🔐 ROT13 编码器和解码器
使用自可逆的ROT13密码转换文本 - 非常适合隐藏剧透和基本文本混淆
📥 输入文本
0 个字符
📤 输出文本
0 个字符
🎯 ROT13 字母表映射
ROT13 将每个字母替换为其后13位的字母。由于字母表有26个字母,应用两次ROT13会返回原始文本。
🏛️ 什么是ROT13?
ROT13(“旋转13位”)是凯撒密码的一个特例,固定偏移量为13。它在在线论坛和新闻组中广泛用于隐藏剧透、谜题答案和笑点。
简单的替换密码
每个字母被字母表中13位后的另一个字母替换。
自可逆
应用两次ROT13即可恢复原始文本——编码和解码操作相同。
保留大小写
大写字母保持大写,小写字母保持小写。
广泛支持
跨平台、论坛和文本编辑器使用,用于快速文本混淆。
⚙️ 工作原理
每个字母都被字母表中前进13位的字母替换。到达末尾时,它会绕回到开头:
- A ↔ N, B ↔ O, C ↔ P, 等。
- 数字和符号保持不变(除非启用选项)
- 数学公式: (x + 13) mod 26
- 编码和解码过程相同
🔐 安全性与用途
ROT13不提供任何加密安全性,可以轻易破解。但是,它非常适合: and is trivially broken. However, it's perfect for:
🎬 隐藏剧透
防止在论坛中意外读到电影、书籍或游戏的剧透。
📧 邮箱地址混淆
在网站上混淆电子邮件地址,以防垃圾邮件机器人。
🎓 教授密码学
向学生介绍基本的加密概念。
🎮 谜题和游戏
创建简单的单词谜题和谜语。
❓ 常见问题解答
ROT13与其他凯撒密码有何不同?
ROT13的独特之处在于它使用恰好13位的偏移,这是26个字母的字母表的一半。这意味着相同的操作既可以编码也可以解码文本——应用两次ROT13即可返回原始消息。这种自可逆的特性使其在快速混淆任务中特别方便。
ROT13对保护敏感信息安全吗?
不,ROT13绝对不提供任何加密安全性。它非常容易解码,绝不应用于保护密码、个人信息或机密数据。它仅用于隐藏剧透、谜题答案或模糊您不希望被意外阅读的文本。
既然不安全,为什么还在使用ROT13?
ROT13非常适合那些您只想对信息进行随意隐藏而不需要真正安全的场景。常见用途包括:在在线讨论中隐藏电影/书籍剧透,混淆电子邮件地址以防垃圾邮件机器人,创建简单的单词谜题,以及教授密码学基础知识。其简单性和自可逆性使其成为这些目的的理想选择。
ROT13可以编码数字和特殊字符吗?
传统的ROT13只转换字母(A-Z,a-z),而数字、空格和特殊字符保持不变。但是,有扩展版本如ROT18(包含数字旋转0-9)和ROT47(包含更多ASCII字符)。我们的工具提供一个可选设置,可以使用5位旋转(0↔5, 1↔6, 等)来处理数字。
如何解码ROT13文本?
由于ROT13是自可逆的,解码方式与编码方式完全相同——只需再次应用ROT13!只需将编码后的文本粘贴到输入字段中,然后点击“处理ROT13”。ROT13的美妙之处在于不需要单独的编码/解码操作。
今天ROT13通常用在哪里?
ROT13广泛用于:在线论坛和讨论区(如Reddit, Stack Exchange)隐藏剧透;地理藏宝谜题;网站上的电子邮件地址混淆;Unix/Linux系统(内置于vim等编辑器中);编程练习和编码挑战;以及教育环境中教授基本加密概念。
💻 不同编程语言中的ROT13
Python
import codecs
# Method 1: Using codecs
text = "Hello World"
encoded = codecs.encode(text, 'rot13')
print(encoded) # Output: Uryyb Jbeyq
# Method 2: Manual implementation
def rot13(text):
result = []
for char in text:
if char.isalpha():
offset = 65 if char.isupper() else 97
result.append(chr((ord(char) - offset + 13) % 26 + offset))
else:
result.append(char)
return ''.join(result)
print(rot13("Hello World")) # Output: Uryyb Jbeyq
JavaScript
function rot13(str) {
return str.replace(/[a-zA-Z]/g, function(char) {
const code = char.charCodeAt(0);
const offset = code >= 65 && code <= 90 ? 65 : 97;
return String.fromCharCode((code - offset + 13) % 26 + offset);
});
}
console.log(rot13("Hello World")); // Output: Uryyb Jbeyq
PHP
<?php
// Method 1: Using str_rot13
$text = "Hello World";
$encoded = str_rot13($text);
echo $encoded; // Output: Uryyb Jbeyq
// Method 2: Manual implementation
function rot13_manual($str) {
$result = '';
for ($i = 0; $i < strlen($str); $i++) {
$char = $str[$i];
if (ctype_alpha($char)) {
$offset = ord(ctype_upper($char) ? 'A' : 'a');
$result .= chr((ord($char) - $offset + 13) % 26 + $offset);
} else {
$result .= $char;
}
}
return $result;
}
?>
Java
public class ROT13 {
public static String encode(String text) {
StringBuilder result = new StringBuilder();
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) {
char offset = Character.isUpperCase(c) ? 'A' : 'a';
result.append((char) ((c - offset + 13) % 26 + offset));
} else {
result.append(c);
}
}
return result.toString();
}
public static void main(String[] args) {
System.out.println(encode("Hello World"));
// Output: Uryyb Jbeyq
}
}
C++
#include <iostream>
#include <string>
#include <cctype>
std::string rot13(const std::string& text) {
std::string result;
for (char c : text) {
if (std::isalpha(c)) {
char offset = std::isupper(c) ? 'A' : 'a';
result += (c - offset + 13) % 26 + offset;
} else {
result += c;
}
}
return result;
}
int main() {
std::cout << rot13("Hello World") << std::endl;
// Output: Uryyb Jbeyq
return 0;
}
Linux/Unix 命令行
# Using tr command
echo "Hello World" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# Output: Uryyb Jbeyq
# Decode (same command)
echo "Uryyb Jbeyq" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# Output: Hello World
# Process a file
cat input.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' > output.txt
📚 历史背景
ROT13在20世纪80年代的Usenet上流行起来,作为一种隐藏潜在冒犯性内容的方式。它被描述为“Usenet上相当于将答案倒印”。
- 起源于早期互联网文化
- 仍在现代论坛和讨论区中使用
- 内置于许多文本编辑器(如Vim)中
- Unix实用程序中的标准功能