将Vigenere Cipher安排到列中

时间:2014-10-17 11:33:23

标签: encryption vigenere

据我所知,如果您将Vigenere密码安排到列中,您可以使用重合索引来找出密钥长度。 我正在努力编写一个算法来获取一段文本并将其排列成列。

例如 - 1 2 3 4 5 6 7 8 9 10

如果期限为2,则会返回此项 - 1,3,5,7,9 2,4,6,8,10

并对每个字符串执行IOC测试

如果期限是3 - 1,4,7,10 2,5,8 3,6,9

并对每个字符串执行IOC测试

等等 我已经构建了一个IOC测试但是我很难想到一个算法将文本分成几列,任何关于如何更像计算机科学家的思考并构建这样的算法的技巧?

1 个答案:

答案 0 :(得分:2)

如果您已经知道密钥长度,那将非常简单。如果您不知道密钥长度,则必须通过熵进行猜测。以下是Python中的一个示例:

if you_dont_know_key_length:
    key_length = find_key_length_by_entropy(ciphertext)

columns = [ciphertext[i::key_length] for i in xrange(key_length)]

任何语言应该基本上具有相同的构造(在密文中选择每个 n -th元素)