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。我认为这正是我在这里所做的,但我必须在某个地方出错。
它也没有正确解密字符串。我可以加密字符串,但是当我尝试解密我刚刚加密的字符串时,它会返回错误的结果。
任何帮助将不胜感激:)提前感谢。
答案 0 :(得分:0)
您的offsetD
值似乎有错误的符号(或者您需要减去它,而不是添加)。如果它为正93,您将获得您在示例运行中显示的输出。更改其值的设置方式(例如offsetD = -int(input("Please enter offset value (1 to 94):"))
或在您使用时减去该值(例如decryption -= offsetD
)。