【发布时间】:2012-02-12 18:49:24
【问题描述】:
我正在尝试生成长度为 r 的 Vigenere 密码密钥的可延迟迭代集合。我知道itertools 和permutations() 方法。但是,这会生成诸如ABCD、ABCE、ABCF 之类的密钥,但它永远不会执行诸如AABC 之类的操作。
所以基本上,我需要不重复的元组或字符串(也就是说,可以将重复的键切成两半以获得相同的两半),但可以包含重复的字符。很好的例子:AABABA,而不是AABAAB。
如何创建这样的集合,它不会生成这样的密钥,并且会延迟迭代,以便在我想探索超过 3 个字符的密钥时不会炸毁我的 RAM?
【问题讨论】:
-
你的意思是“不能把钥匙切成两半得到两个相同的一半”?
-
也许听起来模棱两可,但我的意思是说“重复”意味着你可以做这样的事情。
-
这不是模棱两可,是矛盾的。首先你说不重复(所以
AABAAB不会工作),然后你说你可以把钥匙切成两半并得到两个相同的两半(所以AABAAB会 工作)。您的示例支持前者。只是要求澄清。 -
我认为 OP 意味着
repetitive == can cut into equal halves并且字符串不应重复,如示例所示。 -
我会改变它,在这种情况下。
标签: python cryptography iteration lazy-evaluation vigenere