🔐 ROT13 エンコーダー&デコーダー
自己可逆的なROT13暗号でテキストを変換 - ネタバレ隠しや基本的なテキストの難読化に最適
📥 入力テキスト
0 文字
📤 出力テキスト
0 文字
🎯 ROT13 アルファベットマッピング
ROT13は各文字を13文字後の文字に置き換えます。アルファベットは26文字なので、ROT13を2回適用すると元のテキストに戻ります。
🏛️ ROT13とは?
ROT13(「13文字回転」)は、固定シフト13のシーザー暗号の特殊なケースです。オンラインフォーラムやニュースグループで、ネタバレ、パズルの解答、オチなどを隠すために広く使われています。
単純な換字式暗号
各文字はアルファベットで13文字離れた別の文字に置き換えられます。
自己可逆的
ROT13を2回適用すると元のテキストに戻ります - エンコードとデコードは同じ操作です。
大文字・小文字を保持
大文字は大きいまま、小文字は小さいままです。
広くサポートされている
プラットフォーム、フォーラム、テキストエディタで迅速な難読化のために使用されます。
⚙️ 仕組み
各文字はアルファベットで13文字先の文字に置き換えられます。終わりに達すると、最初に戻ります:
- A ↔ N, B ↔ O, C ↔ P, など。
- 数字と記号は変更されません(オプションが有効な場合を除く)
- 数式: (x + 13) mod 26
- エンコードとデコードは同じプロセス
🔐 セキュリティと用途
ROT13は暗号学的なセキュリティを提供せず、簡単に破られます。しかし、以下のような用途に最適です: and is trivially broken. However, it's perfect for:
🎬 ネタバレを隠す
フォーラムで映画、本、ゲームのネタバレを誤って読むのを防ぎます。
📧 メールアドレスの難読化
ウェブサイト上でスパムボットからメールアドレスを隠します。
🎓 暗号学の教育
学生に基本的な暗号化の概念を紹介します。
🎮 パズルとゲーム
簡単な単語パズルやなぞなぞを作成します。
❓ よくある質問
ROT13は他のシーザー暗号と何が違うのですか?
ROT13は、26文字アルファベットの半分である13のシフトを使用するためユニークです。これは、同じ操作でテキストのエンコードとデコードの両方が行えることを意味します。ROT13を2回適用すると元のメッセージに戻ります。この自己可逆的な特性は、迅速な難読化タスクに特に便利です。
ROT13は機密情報の保護に安全ですか?
いいえ、ROT13は暗号学的なセキュリティを全く提供しません。解読は非常に簡単で、パスワード、個人情報、機密データの保護には絶対に使用してはいけません。ネタバレやパズルの答えを隠したり、誤って読まれたくないテキストを難読化するためだけのものです。
安全でないのに、なぜROT13はまだ使われているのですか?
ROT13は、本当のセキュリティを必要とせずに、何気ない閲覧から情報を隠したいシナリオに最適です。一般的な用途には、オンラインディスカッションでの映画/本のネタバレを隠す、スパムボットからメールアドレスを難読化する、簡単な単語パズルを作成する、暗号学の基本を教えるなどがあります。その単純さと自己可逆的な性質が、これらの目的に理想的です。
ROT13は数字や特殊文字をエンコードできますか?
伝統的なROT13は文字(A-Z、a-z)のみを変換し、数字、スペース、特殊文字は変更しません。ただし、数字の回転(0-9)を含むROT18や、より多くのASCII文字を含むROT47のような拡張バージョンがあります。当社のツールでは、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は1980年代にUsenetで、攻撃的な可能性のあるコンテンツを隠す方法として人気を博しました。これは「答えを逆さまに印刷するUsenet版」と表現されています。
- 初期のインターネット文化から生まれた
- 現代のフォーラムやディスカッションボードでまだ使用されている
- 多くのテキストエディタ(Vimなど)に組み込まれている
- Unixユーティリティの標準機能