解决没有key-python的vigenere代码

时间:2011-11-07 01:38:34

标签: python encryption vigenere

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

“消息已使用讨论的Vigenere加密方法进行加密 在课堂上,其密文EQNVZ已被截获。打破代码。假设 密钥长度与消息,消息和密钥相同 仅由大写字母组成。“

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

3 个答案:

答案 0 :(得分:10)

这是一个棘手的问题。如果"密钥与消息的长度相同"然后你有one-time pad隐藏除消息长度以外的所有内容。

答案 1 :(得分: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中找不到输入文本,它可能会失败。

答案 2 :(得分: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(),它检查明文是全部大写还是字典。