ROT13
此条目需要补充更多来源。 (2015年4月28日) |
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是它自己本身的逆反;也就是说,要还原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应用函数会回复原始文字(在数学上,这有时称之为对合(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 | |
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。其他字的示例如表中所示。[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()也是自我逆反的,故提供的保全程度好不到哪里去。
参见
注释与参考资料
- ^ Horrocks, Bruce. UCSM Cabal Circular #207-a. Usenet group uk.comp.sys.mac. 28 June 2003 [2007-09-17] (英语).
- ^ 2.0 2.1 2.2 2.3 Schneier, Bruce. Applied Cryptography Second. John Wiley & Sons. 1996: 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.). ROT13. The Jargon File, 4.4.7. 2003-12-29 [2007-09-19]. (原始内容存档于2014-06-11) (英语).
- ^ Ferner, Matt. How to Hide Email Addresses From Spam Bots. PracticalEcommerce. [12 June 2014]. (原始内容存档于2016-05-08) (英语).
- ^ Kahn, David. The Codebreakers: The Story of Secret Writing. New York: Macmillan. 1967. ISBN 0-684-83130-9 (英语).
- ^ On the 2ROT13 Encryption Algorithm (PDF). Prüfziffernberechnung in der Praxis. 2004-09-25 [2007-09-20]. (原始内容存档 (PDF)于2014-06-11) (英语).
- ^ Hollebeek, Tim; Viega, John. Bad Cryptography in the Netscape Browser: A Case Study. Reliable Software Technologies. [2007-09-20]. (原始内容存档于2014-09-04) (英语).
- ^ Perens, Bruce. Dimitry Sklyarov: Enemy or friend?. ZDNet News. 2001-09-01 [2007-09-20]. (原始内容存档于2014-06-11) (英语).
- ^ Ferri, Vic. The Count Keys in the Windows Registry. ABC: All 'Bout Computers. 2007-01-04 [2007-09-20]. (原始内容存档于2007-10-22) (英语).
- ^ De Mulder, Tom. ROT13 Words. Furrfu!. [2007-09-19]. (原始内容存档于2014-06-11) (英语).
- ^ Westley, Brian. westley.c. IOCCC. 1989 [2007-08-13]. (原始内容存档于2012-06-08) (英语).
- ^ Furrfu. Foldoc. 1995-10-25 [2007-08-13]. (原始内容存档于2005-11-29) (英语).
- ^ 5.10 Trivial Encryption. The GNU C Library Reference Manual. 自由软件基金会. 2006-12-03 [2007-09-20]. (原始内容存档于2014-06-11) (英语).
外部链接
- ROT5 与 ROT13 在线转换器(页面存档备份,存于互联网档案馆)(不用JavaScript)
- 各种编程语言版本的ROT13软件 — 包括SSH补丁让它加入ROT13支持,以及映射的密码分析工具,用来自动分别ROT13文字与纯文字。
- 在线的ROT13加密解密工具(页面存档备份,存于互联网档案馆)。