在做一些cryptanalysis
时,我遇到了需要生成某些字符组合的情况。这可以使用许多在线组合生成器轻松完成,除了我想 FIX 我已经知道的某些角色的位置在正确的位置,同时为其余的生成组合。例如,我有字符'A', 'B', 'c', 'D, 'e', 'F', and 'g'
。
现在,我知道'A'
会在第一点出现。因此,请在第一个位置修复'A'
。现在,我知道第二和第三点可能是'B'
或'c'
。因此,为第二和第三位置换'B'
和'c'
。对于第四点,我有一个固定的'D'
。第五,固定'e'
。第六,'F'
或'f'
。第七,'g'
或'3'
。等等..
我的问题是如何在按照我想要的方式排列其余字符时修复某些字符?我可以使用任何工具,还是需要自己编写?有人能指点我这么简单吗?
答案 0 :(得分:1)
这可以通过Python的itertools.product()
函数来解决:
#!/usr/bin/env python
from __future__ import absolute_import, division, print_function
from itertools import product
def main():
for characters in product(*['A', 'Bc', 'Bc', 'D', 'e', 'Ff', 'g3']):
print(''.join(characters))
if __name__ == '__main__':
main()
输出:
ABBDeFg
ABBDeF3
ABBDefg
ABBDef3
ABcDeFg
ABcDeF3
ABcDefg
ABcDef3
AcBDeFg
AcBDeF3
AcBDefg
AcBDef3
AccDeFg
AccDeF3
AccDefg
AccDef3