ROT13（迴轉 13 位，英語：rotate by 13 places，有時也記為 ROT-13）是一種簡易的替換式密碼。ROT13 是一種在英文網路論壇用作隱藏八卦（spoiler）、妙句、謎題解答以及某些髒話的工具，目的是逃過版主或管理員的匆匆一瞥。ROT13 被描述成「雜誌字謎上下顛倒解答的 Usenet 對等體」。（Usenet equivalent of a magazine printing the answer to a quiz upside down.） ROT13 也是過去在古羅馬開發的凱撒加密的一種變體。

ROT13 是它自己本身的逆反；也就是說，要還原 ROT13，套用加密同樣的演算法即可得，故同樣的操作可用再加密與解密。該演算法並沒有提供真正的密碼學上的保全，故它不應該被套用在需要保全的用途上。它常常被當作弱加密範例的典型。ROT13 激勵了廣泛的線上書信撰寫與字母遊戲，且它常於新聞群組對話中被提及。



描述

套用 ROT13 到一段文字上僅僅只需要檢查字元字母順序並取代它在 13 位之後的對應字母，有需要超過時則重新繞回 26 英文字母開頭即可。A 換成 N、B 換成 O、依此類推到 M 換成 Z，然後序列反轉：N 換成 A、O 換成 B、最後 Z 換成 M。只有這些出現在英文字母裡頭的字元受影響；數字、符號、空白字元以及所有其他字元都不變。因為只有在英文字母表裡頭只有 26 個，並且 26 = 2 × 13，ROT13 函式是它自己的逆反：

　
: 對任何字元 _x_： ${\mbox{ROT}}_{13}({\mbox{ROT}}_{13}(x))={\mbox{ROT}}_{26}(x)=x$ 。

換句話說，兩個連續的 ROT13 應用函式會回復原始文字（在數學上，這有時稱之為對合（involution）；在密碼學上，這叫做對等加密（reciprocal cipher））。

轉換可以利用尋找表完成，如下例所示：

例如，下面的英文笑話，精華句為 ROT13 所隱匿：

```
How can you tell an extrovert from an
introvert at NSA? Va gur ryringbef,
gur rkgebireg ybbxf ng gur BGURE thl'f fubrf. 
```

透過 ROT13 表格轉換整片文字，該笑話的解答揭露如下：

```
Ubj pna lbh gryy na rkgebireg sebz na
vagebireg ng AFN? In the elevators,
the extrovert looks at the OTHER guy's shoes.
```

第二次 ROT13 函式將轉回原始文字。



用途

ROT13 過去在 1980 年代早期的 net.jokes 新聞群組裡使用。它被用來隱藏某些可能侮辱到特定讀者的笑話、隱晦某個謎題的答案或八卦性的內容。。之所以選一次 13 個字母的位移而不是其他值（例如原本凱撒加密裡的 3 字母位移）乃因 13 位這個值剛剛好加密解密都是一樣，故只要一行命令就可以簡潔的滿足兩者需要。ROT13 一般是新聞閱讀軟體內建支援的功能。電子郵件位址有時也以 ROT13 編碼以躲過較不複雜的垃圾郵件機器人耳目。

 
ROT13 是凱撒密碼加密演算法的特例。西元前一世紀尤利烏斯・凱撒發明凱薩加密法。更具體的例子是伐蹉衍那加密（Vatsyayana cipher），該密碼描述了《欲經》整本經文。

ROT13 並不意圖用在重視機密性的場合。固定位移的使用意味著該加密實際上並沒有金鑰，而且解碼不需要對 ROT13 實際上的使用有較深了解。即使沒有 ROT13 使用的知識，該演算法也相當容易透過頻率分析破解。正因為其完全不適合真正的機密用途，ROT13 已經變成了一種警句，用來影射任何顯著的弱加密體系；例如批評家可能會這樣說：「56 位元 DES 這些日子以來只比 ROT13 要好一點。」另外，作為對真正術語像「雙重 DES」的嘲諷，半路殺出的術語「雙重 ROT13」、「ROT26」、「2ROT13」、以及玩笑性質的學術論文「關於 2ROT13 加密演算法」 都閃爍著幽默的心思。因為套用 ROT13 到已經加密過的 ROT13 文字，將會打回原形；也就是說，ROT26 等於沒有加密。延伸下去，三重 ROT13（用來取笑其對比的 3DES）等同於 1 次 ROT13 而已。

於 1999 年 12 月，人們發現網景通訊家利用 ROT13 作為其儲存 email 密碼的不安全體系。。在 2001 年，俄羅斯程式設計師狄米區・史蓋里亞羅夫（Dimitry Sklyarov）展示 eBook 販賣商 New Paradigm Research Group（NPRG）使用 ROT13 來對它們的檔案加密；據推測 NPRG 可能把 ROT13 玩具樣本 —— 跟著 Adobe eBook 軟體開發套件一起提供 —— 用錯在重大加密體系上。Windows XP 也在某些登錄檔鍵上使用 ROT13。



字母遊戲與網路文化

ROT13 為字母遊戲提供了良機。許多字經過 ROT13 轉換後，會產生另一個字。英文裡字最長的範例是一組 7 個字母的字 abjurer 與 nowhere；另一組七字母的是 chechen 與 purpura。其他字的範例如表中所示。

1989 年國際 C 語言混亂代碼大賽（IOCCC）收錄了一個來自布來恩・衛斯里（Brian Westley）的作品。衛斯里的電腦程式可被 ROT13 編解碼，並且仍舊正確的通過編譯。該程式主要是進行 ROT13 編碼，或者反過來解碼其輸入。

新聞群組 alt.folklore.urban 創造了生字：furrfu，該字是常用狀聲辭「噓」（sheesh）的 ROT13 編碼。「Furrfu」在 1992 年中期首度出現。當時在 alt.folklore.urban 新聞群組裡許多都會傳奇的眾多水帖裡，新手過度使用「Sheesh!」而遭到某些發帖人抱怨，而這些新手對此所作的回應。



變體

ROT47 是 ROT13 的衍生物，它除了打亂基本字母外，也對數字與常見符號做處理。除了使用 A–Z 系列外，ROT47 使用範圍較廣的 ASCII 字元集。具體而言，所有 7-bit 可列印字元，除空白以外，從十進位 33 '!' 到 126 '~' 都被毫無保留的用來做 47 位循環。使用較廣的字母集原意是產生比 ROT13 更徹底的亂碼，不過因為 ROT47 無差別地將數字與符號混合匯入，導致這種方式較容易看出某串文字被動過手腳。

ROT47 的範例： 
The Quick Brown Fox Jumps Over The Lazy Dog. 
... 加密成為... 
%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]

程式設計裡標準的 GNU C 函式庫包含了一個函式 —memfrob()— 它與 ROT13 有類似的效果，儘管該函式使用物件是任意雙位元組資料。memfrob() 透過每個位元與雙位元模板 00101010（42）做互斥（XOR）運算合併。這個效果是一種簡單的 XOR 操作。與 ROT13 相似， memfrob() 也是自我逆反的，故提供的保全程度好不到哪裡去。



參見


* 密碼分析



注釋與參考資料



外部連結


* ROT5 與 ROT13 線上轉換器（頁面存檔備份，存於網際網路檔案館）（不用 JavaScript）

* 各種程式語言版本的 ROT13 軟體 — 包括 SSH 補丁讓它加入 ROT13 支援，以及對映的密碼分析工具，用來自動分別 ROT13 文字與純文字。

* 在線的 ROT13 加密解密工具（頁面存檔備份，存於網際網路檔案館）。