使用 python-2.7,您可以使用以下方法轻松实现 rot-13 Ceasar Cipher
>>> 'abcdefghijklmnopqrstuvwxyz'.encode('rot-13')
'nopqrstuvwxyzabcdefghijklm'
您甚至可以在CPython 存储库的 Zen of Python 代码中找到它。
但是,python3.6 上的相同代码给出了 -
>>> 'abcdefghijklmnopqrstuvwxyz'.encode('rot-13')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
LookupError: 'rot-13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
如果我想rot-13
在 python3.x 中使用编码,我需要导入codecs
.
>>> import codecs
>>> codecs.encode('abcdefghijklmnopqrstuvwxyz', 'rot-13')
'nopqrstuvwxyzabcdefghijklm'
当然,这确实是一个小问题,我不介意导入codecs
以实现凯撒密码(无论如何它都是内置的)。我只是想知道这个设计决定背后是否有任何潜在的理由。也许原因就像“rot-13 不是真正的编码”一样简单,我不知道。
如果有人可以对此有所了解,我很想听听!