如何使用索引创建加密/解密函数?



我已经尝试解决这个问题几个小时了,我不知道怎么做。我不打算把问题写下来,只写我正在努力的部分。

假设我们有:

letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
key = 'guwyrmqpsaeicbnozlfhdkjxtvGUWYRMQPSAEICBNOZLFHDKJXTV'
message = 'wncodhrlf'

如你所见,消息中的w等于c, n等于0,等等,所以消息拼出'computer'。我需要定义可以使用随机密钥解码/加密消息的函数,并且我被告知这是通过索引解决的。

如果你知道如何解决这个问题,请告诉我。我不需要你写一个代码,我只需要被引导到一个解决方案,因为我一直迷路。谢谢你的宝贵时间。

简单翻译:

>>> message.translate(str.maketrans(key, letters))
'computers'

如果我理解正确的话,实际的字母和加密的字母在字母和关键变量中分别具有相同的索引。

所以要解析一个加密的字符串,你只需要遍历字符串的字母,在密钥字符串中找到每个字符的索引,然后在字母字符串中获得该索引处的字母。

例如,调用key.index('w')应该返回2。调用字母[2]将返回'c'。

要加密未加密的字符串,只需执行相反的操作。例如,要加密'c',调用letters.index('c'),它返回2。然后调用key[2]应该返回'w'。

首先,您需要访问消息中的每个字母。一种可能的方法是使用索引:

value = message[0]

从那里,你需要看到这个字母在钥匙的什么地方。Python中的字符串对象有几个辅助方法。

index = key.index("a")  # Finds 9 as the index

现在你有了一个索引,在字母列表中找到相应的值就像使用索引一样简单:

decoded = letters[9]  # Finds "j" in the list of letters

我把它留给你把它拼凑起来。

我要注意的是,其中很多都可以在文档中找到,它是相当容易接近的,我建议试着通读它。

使用字典的显式Python代码:

letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
key = 'guwyrmqpsaeicbnozlfhdkjxtvGUWYRMQPSAEICBNOZLFHDKJXTV'
message = 'wncodhrlf'
assert len(letters) == len(key)
key_letter_mapping = {}
for i in range(len(key)):
key_letter_mapping[key[i]] = letters[i]

result = ''
for c in message:
result += key_letter_mapping[c]
print(result)

相关内容

  • 没有找到相关文章