我想教自己使用interactivepython.org网站进行编程。我遇到了一个似乎超出我头脑的问题。我一直在为它工作3个小时,并且正在支持我的头脑。不知道如何打破这一点。我该如何解决这个密码学问题?
问题:
解码秘密信息:
的描述可以令人望而生畏,但该解决方案并不难。您可以将内置字符串数据类型与相关的内置函数和while循环(使用'len'函数)或for循环(使用'in'运算符)来遍历字符串。此外,使用课程材料中讨论的'chr'和'ord'函数(基于ASCII代码)。请务必查看课程材料中的示例,并练习练习2中的#18和#19。提供了#19的答案,它可以为解决此问题提供有价值的提示。
您的国家处于战争状态,您的敌人正在使用密码进行通信。您已设法截取如下消息:
:mmZ\dxZmx]Zpgy
该消息明显使用敌方的密码进行加密。您刚刚了解到他们的加密方法基于ASCII码(您可以通过在线搜索轻松找到该设置)。使用此系统对字符串中的单个字符进行编码。例如,字母'A'使用数字65进行编码,'B'使用数字66编码。
您的敌人的密码采用消息的每个字母并按如下方式进行加密(使用密钥) :
Character ASCII H 72 e 101 y 121 Encrypted H = (72 + 10) = 82 = R in ASCII Encrypted e = (101 + 10) = 111 = o in ASCII Encrypted y = 32 + ((121 + 10) - 127) = 36 = $ in ASCII
因此,“嘿”将被称为“滚装$”传送:
If (OriginalChar + Key > 126) then EncryptedChar = ((OriginalChar + Key) - 127) + 32 Else EncryptedChar = (OriginalChar + Key)
例如,如果敌人使用密钥= 10则消息“嘿”将被作为加密。
编写一个解密截获的消息的程序。您只知道使用的密钥是1到100之间的数字。您的程序应该尝试使用1到100之间的所有可能的密钥对消息进行解码。当您尝试使用有效密钥时,该消息将有意义。对于所有其他键,该信息将显示为乱码。
提示:您将需要实现解密函数,该函数将加密消息作为字符串和密钥接收为整数,并将解密消息作为字符串返回。您可以解密该消息的每个字母如下:
If (EncryptedChar - Key < 32) then DecryptedChar = ((EncryptedChar - Key) + 127) - 32 Else DecryptedChar = (EncryptedChar - Key)
注意:您还应该实现一个加密函数,它在一个正常的消息作为字符串,并作为重点整数,并返回字符串对应的加密消息(该上面在问题描述中提到了加密消息的算法)。此功能可帮助您加密任何常规信息,然后将其传递给您的解密功能进行解密。
对于加密:您应该询问用户任何常规消息和密钥,并输出相应的加密消息。
样品运行:
Enter a regular message to encode: Attack at dawn! Enter a key value (between 0 and 100) for encoding: 88 The encoded message is: :mmZ\dxZmx]Zpgy
解密:你应该询问用户的加密消息和输出100以及格式,解密的消息(使用1和100之间的键)与相应的沿核心价值。
采样运行(以下乱码的消息是不准确的):
Enter an encrypted message to decode: :mmZ\dxZmx]Zpgy The following are the decoded messages for keys 1 to 100: Key: 1 –> Decoded Message: whfuihwuiidh89 Key: 2 –> Decoded Message: 9ehkaOY3ewine ... Key: 87 –> Decoded Message: Buubdl!bu!ebxo” Key: 88 –> Decoded Message: Attack at dawn! ... Key: 100 –> Decoded Message: on3dwp389/wi8
这是我目前拥有的代码:
def encrypt(message, key):
result = ""
for char in message:
result += encryptedChar
return result
你的问题的描述似乎令人生畏,但解决的办法并不难,你可以使用内置的'字符串。 ''带有相关的内建函数和'while'循环(带有''len''函数)或'for'循环(带有''in''运算符)的数据类型来遍历字符串,并且使用''chr ''和''ord''函数(基于ASCII码) –
你应该尝试在字符串库中使用'string.make_trans('plaintext','ciphertex')' –
Yah i've阅读大约500次。谢谢! – TYPKRFT