Encryption 将维格纳密码排列成列

Encryption 将维格纳密码排列成列,encryption,vigenere,Encryption,Vigenere,据我所知,如果你将一个Vigenere密码排列成列,你可以使用重合度索引来找出密钥长度。 我正在努力编写一个算法,将一段文本排列成列 例如— 12345678910 如果期间为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测试,但是我正在努力想一个算法来将文本分割成多个字符,关于如何像计算机科学家一样思考并构建这样的算法,有什么提示

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

例如— 12345678910

如果期间为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测试,但是我正在努力想一个算法来将文本分割成多个字符,关于如何像计算机科学家一样思考并构建这样的算法,有什么提示吗?

如果你已经知道密钥长度,那就很简单了。如果你不知道密钥的长度,你必须通过熵来猜测它。以下是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个元素)