Python Caesar Cypher - 回到开头

时间:2014-05-09 07:09:43

标签: python encryption

Caeser Cypher计划的一个小问题我正在写作。我是编程新手。

因此,当偏移指向超过126的字符时,我想回到开头,以便它与ASCII字符集一起使用。我设法在加密时这样做:

   if encryption > 126:
       encryption = encryption - 94

哪个工作正常。但是在解密时,它似乎并不起作用。我仍然得到ASCII字符集之外的字符。 E.g:

Please enter string to decrypt: abcdefg
Please enter offset value (1 to 94): 93
Decrypted string:
 ¾¿ÀÁÂÃÄ

以下是我写的代码:

   for letter in range(len(messageD)):

       decryption = ord(messageD[letter])
       decryption += offsetD

       if decryption < 32:
           decryption = decryption + 94

       decryption = chr(decryption)
       decryptedD += decryption

   print('Decrypted string:\n', decryptedD)

如果减去的偏移量导致数字小于32,我们应该在结果中添加94。我认为这正是我在这里所做的,但我必须在某个地方出错。

它也没有正确解密字符串。我可以加密字符串,但是当我尝试解密我刚刚加密的字符串时,它会返回错误的结果。

任何帮助将不胜感激:)提前感谢。

1 个答案:

答案 0 :(得分:0)

您的offsetD值似乎有错误的符号(或者您需要减去它,而不是添加)。如果它为正93,您将获得您在示例运行中显示的输出。更改其值的设置方式(例如offsetD = -int(input("Please enter offset value (1 to 94):"))或在您使用时减去该值(例如decryption -= offsetD)。