这是我必须弄清楚的问题:
“一条消息被课堂讨论的Vigenere加密方法加密,其密文EQNVZ被截获。破解密码。假设密钥与消息长度相同,消息和密钥仅由大写字母组成。”
有没有办法在python中做到这一点?我知道有一种方法可以在 python 中制作密文,但有没有办法走另一条路?
这是我必须弄清楚的问题:
“一条消息被课堂讨论的Vigenere加密方法加密,其密文EQNVZ被截获。破解密码。假设密钥与消息长度相同,消息和密钥仅由大写字母组成。”
有没有办法在python中做到这一点?我知道有一种方法可以在 python 中制作密文,但有没有办法走另一条路?
这是一个技巧问题。如果“密钥与消息的长度相同”,那么您有一个一次性键盘,可以隐藏除消息长度之外的所有内容。
由于您的密文很短,因此暴力破解它可能是最简单的:
def break_vignere(input, list_of_words):
for word in list_of_words:
crypt = vignere(word)
if crypt == input:
return word
return None
当然,如果我们在list_of_words
.
如果“EQNVZ”是整个密文,那么密钥也是5个大写字符所以
from string import uppercase
from itertools import product, imap
for key in imap("".join, product(uppercase, repeat=5)):
if test(key):
break
假设您有一个test()
检查明文是否全部大写并且可能针对字典的函数,将测试所有键。