translate()函数及ROT13加密

translate()

以下实例展示了 translate()函数的使用方法:

#!/usr/bin/pythonfrom string import maketrans   # 引用 maketrans 函数。

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";print str.translate(trantab);

以上实例输出结果如下:

th3s 3s str3ng 2x1mpl2....w4w!!!

以上实例去除字符串中的 'x' 和 'm' 字符:

#!/usr/bin/pythonfrom string import maketrans   # Required to call maketrans function.

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";print str.translate(trantab, 'xm');

以上实例输出结果:

th3s 3s str3ng 21pl2....w4w!!!

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
以上来源: https://zh.wikipedia.org/wiki/ROT13
示例:
  1. import this
  2. trantab = maketrans(str(this.d.values()),str(this.d.keys()))
  3. #trantab = maketrans(str(this.d.keys()),str(this.d.values()))
  4. z = 'fuck daipei'
  5. z.translate(trantab)
  1. Out[91]: 'shpx qnvcrv'






posted @ 2016-01-21 20:04  iAthena  阅读(452)  评论(0编辑  收藏  举报