【发布时间】:2014-09-28 19:31:27
【问题描述】:
我正在使用 chr() 和 ord() 在 python 中开发一个简单的凯撒密码
这是我的代码:
key = 13
newString = ''
if mode == 'decrypt':
key = -key
for c in message:
newString += chr(ord(c) + key)
print newString
但有趣的事情发生了!
当我输入:"Hello world!" 时,我会返回 "Uryy|-?|yq."
看起来不错,对吧?
但是当我尝试破译它时,
我得到:Hello 2old!
有什么见解吗?我认为这与 chr() 返回类似这样的内容有关:'\x84'
【问题讨论】:
-
好的,听起来你对出了什么问题有一个假设......你为什么不测试它?
-
你考虑过溢出吗?
-
Caesar cypher in Python 的可能重复项
-
一个奇怪的问题是
Hello World!有 12 个字符,而密文 (@987654331@) 只有 11 个字符。那么解密的文本也有11个。那么,第一个问题是“哪个角色失踪了,为什么失踪”? -
我猜这取决于您对“正常”字符的定义。它是一个完全正常的字节,但在 8859-x 代码集中对应于 C1 控制字符(准确地说是 IND;C1 控制 (0x80 - 0x9F) 来自 ISO/IEC 6429:1992)。在某些 Windows 代码页(例如 CP1252)中,0x84 对应于打印字符(U+201E DOUBLE LOW-9 QUOTATION MARK for CP1252)。
标签: python encryption caesar-cipher