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.)[1] ROT13 也是过去在古罗马开发的凯撒加密的一种变体。

ROT13透过与其成对的13个字母一对一置换,如HELLO变成URYYB(或者将之解码,URYYB再度变回HELLO)。

ROT13是它自己本身的逆反;也就是说,要还原ROT13,套用加密同样的算法即可得,故同样的操作可用再加密与解密。该算法并没有提供真正的密码学上的保全,故它不应该被套用在需要保全的用途上。它常常被当作弱加密示例的典型。ROT13激励了广泛的在线书信撰写与字母游戏,且它常于新闻组对话中被提及。

描述

编辑

套用ROT13到一段文字上仅仅只需要检查字符字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可[2]A换成NB换成O、依此类推到M换成Z,然后序列反转:N换成AO换成B、最后Z换成M。只有这些出现在英文字母里头的字符受影响;数字符号空白字符以及所有其他字符都不变。因为只有在英文字母表里头只有26个,并且26 = 2 × 13,ROT13函数是它自己的逆反[2]

对任何字符 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编码以躲过较不复杂的垃圾邮件机器人耳目。[5]

ROT13是凯撒密码加密算法的特例。公元前一世纪尤利乌斯·凯撒发明凯萨加密法[6]更具体的例子是伐蹉衍那加密(Vatsyayana cipher),该密码描述了《欲经》整本经文。[来源请求]

ROT13并不意图用在重视机密性的场合。固定位移的使用意味着该加密实际上并没有密钥,而且解码不需要对ROT13实际上的使用有较深了解。即使没有ROT13使用的知识,该算法也相当容易透过频率分析破解[2]。正因为其完全不适合真正的机密用途,ROT13已经变成了一种警句,用来影射任何显著的弱加密体系;例如批评家可能会这样说:“56比特DES这些日子以来只比ROT13要好一点。”另外,作为对真正术语像“双重DES”的嘲讽,半路杀出的术语“双重ROT13”、“ROT26”、“2ROT13”、以及玩笑性质的学术论文“关于2ROT13加密算法”[7] 都闪烁著幽默的心思。因为套用ROT13到已经加密过的ROT13文字,将会打回原形;也就是说,ROT26等于没有加密。延伸下去,三重ROT13(用来取笑其对比的 3DES)等同于1次ROT13而已。

于1999年12月,人们发现网景通信家利用ROT13作为其存储email密码的不安全体系。[8]。在2001年,俄罗斯程序员狄米区·史盖里亚罗夫(Dimitry Sklyarov)展示eBook贩卖商New Paradigm Research Group(NPRG)使用ROT13来对它们的文件加密;据推测NPRG可能把ROT13玩具样本——跟着Adobe eBook软件开发工具包一起提供——用错在重大加密体系上。[9]Windows XP也在某些注册表键上使用ROT13。[10]

字母游戏与网络文化

编辑
abcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLM
ahanun antnag
balkonyx barone
barfones beor
binova ebbsroof
envyrail erre
errsreef flapsync
furshe geltry
gnattang irkvex
clerkpyrex purelycheryl
PNGcat SHAfun
furbysheol terragreen
whatJung URLhey
purpuraChechen shoneFUBAR

ROT13为字母游戏提供了良机。许多字经过ROT13转换后,会产生另一个字。英文里字最长的示例是一组7个字母的字 abjurernowhere;另一组七字母的是chechenpurpura。其他字的示例如表中所示。[11]

1989年国际C语言混乱代码大赛(IOCCC)收录了一个来自布来恩·卫斯里(Brian Westley)的作品。卫斯里的计算机程序可被ROT13编解码,并且仍旧正确的通过编译。该程序主要是进行ROT13编码,或者反过来解码其输入。[12]

新闻组alt.folklore.urban创造了生字:furrfu,该字是常用状声辞“嘘”(sheesh)的ROT13编码。“Furrfu”在1992年中期首度出现。当时在alt.folklore.urban新闻组里许多都会传奇的众多水帖里,新手过度使用“Sheesh!”而遭到某些发帖人抱怨,而这些新手对此所作的回应。[13]

变体

编辑

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()[14]— 它与ROT13有类似的效果,尽管该函数使用对象是任意双字节资料。memfrob()透过每个比特双比特模板00101010(42)做互斥(XOR)运算合并。这个效果是一种简单的XOR操作。与ROT13相似, memfrob()也是自我逆反的,故提供的保全程度好不到哪里去。

参见

编辑

注释与参考资料

编辑
  1. ^ Horrocks, Bruce. UCSM Cabal Circular #207-a. Usenet group uk.comp.sys.mac. 28 June 2003 [2007-09-17] (英语). 
  2. ^ 2.0 2.1 2.2 2.3 Schneier, Bruce. Applied Cryptography Second. John Wiley & Sons. 1996: 11. ISBN 0-471-11709-9 (英语). 
  3. ^ 早期ROT13的使用可从Google USENET存档资料回溯至1982年10月8日当日张贴net.jokes新闻组的帖子 [1][2]
  4. ^ 4.0 4.1 4.2 Raymond, Eric S. (ed.). ROT13. The Jargon File, 4.4.7. 2003-12-29 [2007-09-19]. (原始内容存档于2014-06-11) (英语). 
  5. ^ Ferner, Matt. How to Hide Email Addresses From Spam Bots. PracticalEcommerce. [12 June 2014]. (原始内容存档于2016-05-08) (英语). 
  6. ^ Kahn, David. The Codebreakers: The Story of Secret Writing. New York: Macmillan. 1967. ISBN 0-684-83130-9 (英语). 
  7. ^ On the 2ROT13 Encryption Algorithm (PDF). Prüfziffernberechnung in der Praxis. 2004-09-25 [2007-09-20]. (原始内容存档 (PDF)于2014-06-11) (英语). 
  8. ^ Hollebeek, Tim; Viega, John. Bad Cryptography in the Netscape Browser: A Case Study. Reliable Software Technologies. [2007-09-20]. (原始内容存档于2014-09-04) (英语). 
  9. ^ Perens, Bruce. Dimitry Sklyarov: Enemy or friend?. ZDNet News. 2001-09-01 [2007-09-20]. (原始内容存档于2014-06-11) (英语). 
  10. ^ Ferri, Vic. The Count Keys in the Windows Registry. ABC: All 'Bout Computers. 2007-01-04 [2007-09-20]. (原始内容存档于2007-10-22) (英语). 
  11. ^ De Mulder, Tom. ROT13 Words. Furrfu!. [2007-09-19]. (原始内容存档于2014-06-11) (英语). 
  12. ^ Westley, Brian. westley.c. IOCCC. 1989 [2007-08-13]. (原始内容存档于2012-06-08) (英语). 
  13. ^ Furrfu. Foldoc. 1995-10-25 [2007-08-13]. (原始内容存档于2005-11-29) (英语). 
  14. ^ 5.10 Trivial Encryption. The GNU C Library Reference Manual. 自由软件基金会. 2006-12-03 [2007-09-20]. (原始内容存档于2014-06-11) (英语). 

外部链接

编辑