我正在尝试在Python上的已知key_length
上生成所有可能的键。
键定义为0到255之间的整数列表。
我无法生成所有可能的密钥...
如果key_length
是一个常数,例如2,我就知道如何处理这个 - 它只是2个for循环,你知道。但是,当它在变量中时,我不知道需要写多少个for循环。我想我需要一种不同的方法。这对我来说很难。
感谢您的帮助!
答案 0 :(得分:0)
您可以使用itertools.product
:
from itertools import product
key_length = 2
for items in product(range(256), repeat=key_length):
print(items)
# (0, 0)
# (0, 1)
# ...
# (255, 254)
# (255, 255)
答案 1 :(得分:0)
你可以用numpy的索引来最快地完成这项工作
import numpy as np
max_dim = 3
comb=np.indices(tuple([256 for i in range(max_dim)])).T.reshape(-1,max_dim)
print comb
你想自己做,这会更复杂
from copy import deepcopy
x = [[i,] for i in range(256)]
max_dim = 4
comb = x
dim = 1
while dim < max_dim:
new_comb = []
for c in comb:
for i in x:
a = deepcopy(c)
a.append(i[0])
new_comb.append(a)
comb = new_comb
dim += 1
print comb
x是包含1位数
的所有组合的列表虽然维度低于您给出的最大数量,但我将所有可能的数字添加到之前的所有组合中。请注意,由于python列表的可变性,您必须复制以前找到的组合。