ROT13はラテン文字のA–Zとa–zだけをシフトする——日本語のテキストを通しても、ひらがな・カタカナ・漢字はまったく変化しない。アルゴリズムがそもそもこの狭い範囲外の文字を認識しないからだ。
なぜ日本語の文字は暗号化されないのか
古典的なROT13は26個のラテン文字だけを対象にした置換表にすぎない。ひらがな・カタカナ・漢字はUnicode上でまったく別の範囲にあり、ラテン文字A–Z/a–zとは一切重ならないため、「こんにちは」にROT13を適用しても「こんにちは」のまま変わらない。
全角ラテン文字も対象外という落とし穴
日本語のウェブ文化では、装飾目的で全角ラテン文字(A–Z、a–z)がよく使われるが、これらは半角のA–Zとは別のUnicodeコードポイントを持つ。そのためROT13の実装が半角文字だけを対象にしていると、全角文字も暗号化されずにそのまま残る——これは見た目にはラテン文字なのに変換されない、という分かりにくいバグの原因になりやすい。
ROT13が今も使われる場面
- 国際的なフォーラムで英語テキストのネタバレを隠す。
- 置換暗号を説明するための教育例。
- ラテン文字テキストだけを対象にした軽い難読化——日本語には効果がない。
これがデータ保護にならない理由
ROT13は鍵を使わず、即座に元に戻せる——これは難読化であり暗号化ではない。日本語であれ他の言語であれ、本当に保護したいならAESのような鍵ベースの暗号アルゴリズムが必要だ。