ROT13
维基百科,自由的百科全书
ROT13(迴轉13位,rotate by 13 places,有時中間加了個減號稱作ROT-13)是一種簡易的置換暗碼。它是一種在英文網路論壇用作隱藏八卦(spoiler)、妙句、謎題解答以及某些髒話的工具,目的是逃過版主或管理员的匆匆一瞥。ROT13被描述成「雜誌字謎上下顛倒解答的Usenet對等體」(Usenet equivalent of a magazine printing the answer to a quiz upside down.)[1] ROT13 也是過去在古羅馬開發的凱撒加密的一種變體。
ROT13是它自己本身的逆反;也就是說,要還原ROT13,套用加密同樣的演算法即可得,故同樣的操作可用再加密與解密。該演算法並沒有提供真正的密碼學上的保全,故它不應該被套用在需要保全的用途上。它常常被當作弱加密範例的典型。ROT13激勵了廣泛的線上書信撰寫與字母遊戲,且它常於新聞群組對話中被提及。
目录 |
[编辑] 描述
套用ROT13到一段文字上僅僅只需要檢查字元字母順序並取代它在13位之後的對應字母,有需要超過時則重新繞回26英文字母開頭即可[2]。 A換成N、B換成O、依此類推到M換成Z,然後序列反轉:N換成A、O換成B、最後Z換成M。只有這些出現在英文字母裡頭的字元受影響;數字、符號、空白字元以及所有其他字元都不變。因為只有在英文字母表裡頭只有26個,並且26 = 2 × 13,ROT13函數是它自己的逆反:[2]
- 對任何字元 x: ROT13(ROT13(x)) = ROT26(x) = x。
換句話說,兩個連續的ROT13應用函式會回復原始文字(在數學上,這有時稱之為對合(involution);在密碼學上,這叫做對等加密(reciprocal cipher))。
轉換可以利用查找表完成,如下例所示:
| ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
| NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm |
例如,下面的英文笑話,精華句為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新聞群組裡使用[3]。它被用來隱藏某些可能侮辱到特定讀者的笑話、隱晦某個謎題的答案或八卦性的內容。[2][4]。之所以選一次13個字母的位移而不是其他值(例如原本凱撒加密裡的3字母位移)乃因13位這個值剛剛好加密解密都是一樣,故只要一行命令就可以簡潔的滿足兩者需要[4]。ROT13一般是新聞閱讀軟體內建支援的功能[4]。電子郵件位址有時也以ROT13編碼以躲過較不複雜的垃圾郵件機器人耳目。
ROT13是凱撒密碼加密演算法的特例。西元前一世紀尤利烏斯·凱撒發明凱薩加密法[5]。更具體的例子是跋舍耶那加密(Vatsyayana cipher),該密碼描述了《愛慾經》(Kama-Sutra)整本經文。
ROT13並不意圖用在重視機密性的場合。固定位移的使用意味著該加密實際上並沒有金鑰,而且解碼不需要對ROT13實際上的使用有較深了解。即使沒有ROT13使用的知識,該演算法也相當容易透過頻率分析破解[2]。正因為其完全不適合真正的機密用途,ROT13已經變成了一種警句,用來影射任何顯著的弱加密體系;例如批評家可能會這樣說:「56位元DES這些日子以來只比ROT13要好一點。」另外,作為對真正術語像“雙重DES”的嘲諷,半路殺出的術語“雙重ROT13”、“ROT26”、“2ROT13”、以及玩笑性質的學術論文「關於2ROT13加密演算法」[6]都閃爍著幽默的心思。因為套用ROT13到已經加密過的ROT13文字,將會打回原形;也就是說,ROT26等於沒有加密。延伸下去,三重ROT13(用來取笑其對比的 3DES)等同於1次ROT13而已。
於1999年12月,人們發現網景通訊家利用ROT13作為其儲存email密碼的不安全體系。[7]。在2001年,俄羅斯程式設計師狄米區·史蓋里亞羅夫(Dimitry Sklyarov)展示eBook販賣商New Paradigm Research Group(NPRG)使用ROT13來對它們的文件加密;據推測NPRG可能把ROT13玩具樣本——跟著Adobe eBook软件开发工具包一起提供——用錯在重大加密體系上。[8]Windows XP也在某些注册表键上使用ROT13。[9]
[编辑] 字母遊戲與網路文化
| abcdefghijklmnopqrstuvwxyz NOPQRSTUVWXYZABCDEFGHIJKLM |
|
| aha ↔ nun | ant ↔ nag |
| balk ↔ onyx | bar ↔ one |
| barf ↔ ones | be ↔ or |
| bin ↔ ova | ebbs ↔ roof |
| envy ↔ rail | er ↔ re |
| errs ↔ reef | flap ↔ sync |
| fur ↔ she | gel ↔ try |
| gnat ↔ tang | irk ↔ vex |
| clerk ↔ pyrex | purely ↔ cheryl |
| PNG ↔ cat | SHA ↔ fun |
| furby ↔ sheol | terra ↔ green |
| what ↔ Jung | URL ↔ hey |
| purpura ↔ Chechen | shone ↔ FUBAR |
ROT13為字母遊戲提供了良機。許多字經過ROT13轉換後,會產生另一個字。英文裡字最長的範例是一組7個字母的字 abjurer 與 nowhere;另一組七字母的是chechen 與 purpura。其他字的範例如表中所示。[10]
1989年国际C语言混乱代码大赛(IOCCC)收錄了一個來自布來恩·衛斯里(Brian Westley)的作品。衛斯里的计算机程序可被ROT13編解碼,並且仍舊正確的通過編譯。該程式主要是進行ROT13編碼,或者反過來解碼其輸入。[11]
新聞群組alt.folklore.urban創造了生字:furrfu,該字是常用狀聲辭「噓」(sheesh)的ROT13編碼。「Furrfu」在1992年中期首度出現。當時在alt.folklore.urban新聞群組裡許多都會傳奇的眾多水帖裡,新手過度使用「Sheesh!」而遭到某些發帖人抱怨,而這些新手對此所作的回應。[12]
[编辑] 變體
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()[13]— 它與ROT13有類似的效果,儘管該函式使用對象是任意雙位元組資料。memfrob()透過每個位元與雙位元模板00101010(42)做互斥(XOR)運算合併。這個效果是一種簡單的XOR操作。與ROT13相似, memfrob()也是自我逆反的,故提供的保全程度好不到哪裡去。
[编辑] 參見
[编辑] 注釋與參考資料
- ^ (英文)Horrocks, Bruce(2003年6月28日).UCSM Cabal Circular #207-a.Usenet group uk.comp.sys.mac.於2007年9月17日查閱.
- ^ 2.0 2.1 2.2 2.3 (英文)Schneier, Bruce(1996).Applied Cryptography,Second,John Wiley & Sons,11.ISBN 0-471-11709-9.
- ^ 早期ROT13的使用可從Google USENET存檔資料回朔至1982年10月8日當日張貼net.jokes新聞群組的帖子[1][2]。
- ^ 4.0 4.1 4.2 (英文)Raymond, Eric S. (ed.)(2003年12月29日).ROT13.The Jargon File, 4.4.7.於2007年9月19日查閱.
- ^ (英文)Kahn, David.The Codebreakers: The Story of Secret Writing.New York:Macmillan.ISBN 0-684-83130-9.
- ^ (英文)On the 2ROT13 Encryption Algorithm(PDF).Prüfziffernberechnung in der Praxis(2004年9月25日).於2007年9月20日查閱.
- ^ (英文)Hollebeek, Tim,Viega, John.Bad Cryptography in the Netscape Browser: A Case Study.Reliable Software Technologies.於2007年9月20日查閱.
- ^ (英文)Perens, Bruce(2001年9月1日).Dimitry Sklyarov: Enemy or friend?.ZDNet News.於2007年9月20日查閱.
- ^ (英文)Ferri, Vic(2007年1月4日).The Count Keys in the Windows Registry.ABC: All 'Bout Computers.於2007年9月20日查閱.
- ^ (英文)De Mulder, Tom.ROT13 Words.Furrfu!.於2007年9月19日查閱.
- ^ (英文)Westley, Brian(1989年).westley.c.IOCCC.於2007年8月13日查閱.
- ^ (英文)Furrfu.Foldoc(1995-10-25).於2007年8月13日查閱.
- ^ (英文)5.10 Trivial Encryption.The GNU C Library Reference Manual.自由软件基金会(2006年12月3日).於2007年9月20日查閱.
[编辑] 外部連結
- ROT5 與 ROT13 線上轉換器(不用JavaScript)
- 各種程式語言版本的ROT13軟體 — 包括SSH補丁讓它加入ROT13支援,以及對映的密碼分析工具,用來自動分別ROT13文字與純文字。
|
|
|---|
|
加密: ADFGVX | 仿射 | 阿伯提 | 埃特巴什 | 自动键 | 二分 | 書本 | 凱撒 | 四方 | 大 | 希尔 | 鍵詞 | 虛無主義者 | 交換字 | 豬舍 | 波雷費 | 多字符 | 波利比奥斯 | 軌道柵 | Reihenschieber | Reservehandverfahren | ROT13 | 運動密鑰 | 皮角棍 | 史密斯加密 | 紙牌 | 散列板 | 代入 | 點字碼 | 轉置 | 三分 | 二方 | VIC密碼 | 维吉尼亚 |
|
|
|---|
| 密碼學歷史 | 密碼分析 | Portal:密碼學 | 密码学主题列表 |
| 共通鍵演算法 | 分组密码 | 流密碼 | 公开密钥加密 | 加密哈希函數 | 信息認證碼 | 算數產生器 | 隐写术 |

