发信人: , 信区: Internet
标 题: 乱码大全(2)──ROT13
发信站: BBS 水木清华站 (Tue Feb 3 00:56:44 1998)
乱码大全(2)──ROT13
Jvgu n tbbq pbafpvrapr bhe bayl fher erjneq, jvgu uvfgbel gur svany whqtr bs bhe qrrqf, yrg hf tb sbegu gb yrnq gur ynaq jr ybir, nfxvat Uvf oyrffvat naq Uvf uryc, ohg xabjvat gung urer ba rnegu Tbq'f jbex zhfg gehyl or bhe bja.
Wbua Svgmtrenyq Xraarql
如果你自己能够看懂上面的短文,那么请忽略本文的其余部分。
如果有人写来一封莫名其妙的信, 含有"V Ybir lbh!"这样的句子,也许你还有可能以为这是德语。其实这是一种最简单的通用编码──ROT13, 这个句子实际上是"I Love you!"。不懂德语的人经常要闹笑话,Usenet 上经常有这样的标题:This is not ROT13, it's German. 或者 This isn't German, it's ROT13. 足见这个误会是世界性的。
ROT13 是一种简单的编码,它把字母分成前后两组,每组13个,编码和解码的算法相同,仅仅交换字母的这两个部分,即:[a..m] --> [n..z] 和 [n..z] --> [a..m] (--> Caesar 13)。 英国帝国大学计算机在线字典解释 ROT13 时说: "It is used to enclose the text in a sealed wrapper that the reader must choose to open - e.g. for posting things that might offend some readers, or spoilers. " ROT13 用简易的手段使得信件不能直接被识别和阅读,也不会被搜索匹配程序用通常的方法直接找到。经常用于 USENET 中发表一些攻击性或令人不快的言论或有简单保密需要的文章。
常见的 email/news reader 程序都可以对 ROT 13 进行解码,如 Netscape 和 Microsoft News 等。一些 Text 编辑程序也可以实现 ROT13 的解码。 比如 EditPad( http://www.tornado.be/~johnfg/ ,双牛站的 HTML TextEditor分类 下面也可以下载)。由于 ROT13 是自逆算法,所以,解码和编码是同一个过程。
下面的 C 程序是最短的 ROT13 处理程序,它只有78个字符。当然在MSVC编译中会得到没有库声明的警告或错误。
main(c){while((c=getchar())+1)putchar(isalpha(c)?tolower(c)(WNCOAN) / Date: 1998/01/29 / Newsgroups: microsoft.public.word.programming )
Sub MAIN
StartOfDocument
While Not AtEndOfDocument()
If Asc(Selection$()) > 64 And Asc(Selection$()) < 91 Then
newAsc = Asc(Selection$()) + 13
If newAsc > 90 Then newAsc = newAsc - 26
CharRight 1, 1
Insert Chr$(newAsc)
ElseIf Asc(Selection$()) > 96 And Asc(Selection$()) < 123 Then
newAsc = Asc(Selection$()) + 13
If newAsc > 122 Then newAsc = newAsc - 26
CharRight 1, 1
Insert Chr$(newAsc)
Else
CharRight
EndIf
Wend
End Sub
下面这些网址以 cgi 的方式提供在线的 ROT13 转换。
http://otto.cmr.fsu.edu/~davis_t/rot13.cgi
http://as.alliancestudio.com/tk/rot13.html
http://www.rtg.se/~niclas/reddwarf/rot13.htm
到现在为止,您已经可以对本文开始的那一段代码进行解码了。那是美国前 总统肯尼迪的一段演说。
"乱码大全",作者:bluesea,水木清华BBS成员。欢迎在 BBS 中转载,帮助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS 的 Internet 讨论区。地址是: telnet://bbs.tsinghua.edu.cn ,WWW访问的地址是 http://bbs.tsinghua.edu.cn 。当下面的条件全部满足时,转载本文可以不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将本文或局部用于任何正式出
wncoan@aol.com(WNCOAN) / Date: 1998/01/29 / Newsgroups: microsoft.public.word.programming )
Sub MAIN
StartOfDocument
While Not AtEndOfDocument()
If Asc(Selection$()) > 64 And Asc(Selection$()) < 91 Then
newAsc = Asc(Selection$()) + 13
If newAsc > 90 Then newAsc = newAsc - 26
CharRight 1, 1
Insert Chr$(newAsc)
ElseIf Asc(Selection$()) > 96 And Asc(Selection$()) < 123 Then
newAsc = Asc(Selection$()) + 13
If newAsc > 122 Then newAsc = newAsc - 26
CharRight 1, 1
Insert Chr$(newAsc)
Else
CharRight
EndIf
Wend
End Sub
下面这些网址以 cgi 的方式提供在线的 ROT13 转换。
http://otto.cmr.fsu.edu/~davis_t/rot13.cgi
http://as.alliancestudio.com/tk/rot13.html
http://www.rtg.se/~niclas/reddwarf/rot13.htm
到现在为止,您已经可以对本文开始的那一段代码进行解码了。那是美国前 总统肯尼迪的一段演说。
"乱码大全",作者:bluesea,水木清华BBS成员。欢迎在 BBS 中转载,帮助计算机初学者解决使用软件过程中遇到的实际问题。本文原载于水木清华 BBS 的 Internet 讨论区。地址是: telnet://bbs.tsinghua.edu.cn ,WWW访问的地址是 http://bbs.tsinghua.edu.cn 。当下面的条件全部满足时,转载本文可以不经过作者允许:(1) 转载水木清华 BBS 的信头;(2)不修改原文;(3) 转载仅限于各种 BBS 和非商业性质的个人网点。 严禁各种形式的抄袭,严禁非作者将本文或局部用于任何正式出版的刊物。本自然段是全文的一部分。