将 Vigenere Cipher 排列成列
Posted
技术标签:
【中文标题】将 Vigenere Cipher 排列成列【英文标题】:Arranging Vigenere Cipher into columns 【发布时间】:2014-10-17 11:33:23 【问题描述】:据我了解,如果您将 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】:如果您已经知道密钥长度,那就很简单了。如果您不知道密钥长度,则必须通过熵来猜测。例如,这是一个 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 个元素)
【讨论】:
以上是关于将 Vigenere Cipher 排列成列的主要内容,如果未能解决你的问题,请参考以下文章