2

这是我必须弄清楚的问题:

“一条消息被课堂讨论的Vigenere加密方法加密,其密文EQNVZ被截获。破解密码。假设密钥与消息长度相同,消息和密钥仅由大写字母组成。”

有没有办法在python中做到这一点?我知道有一种方法可以在 python 中制作密文,但有没有办法走另一条路?

4

3 回答 3

11

这是一个技巧问题。如果“密钥与消息的长度相同”,那么您有一个一次性键盘,可以隐藏除消息长度之外的所有内容。

于 2011-11-07T01:56:13.700 回答
2

由于您的密文很短,因此暴力破解它可能是最简单的:

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.

于 2011-11-07T01:44:52.260 回答
0

如果“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()检查明文是否全部大写并且可能针对字典的函数,将测试所有键。

于 2011-11-07T03:15:45.880 回答