Python:数字列表的所有可能组合(加密)

时间:2019-12-01 06:29:27

标签: python list loops cryptography itertools

  1. 我想找到list of numbers所有可能的组合
    从右到左用数字0到9替换每个数字,
    反复执行直到脚本找到一个有效数字,有点像从右到左的天文钟,
  2. 但是,您必须对新组合进行相同的操作,作为要检查的新号码

第1部分:
我尝试了以下函数进行迭代:

def makeIters(cc, n):
    for i in range(len(cc) - 1, -1, -1):
        yield from (cc[:i] + [str(num)] + cc[i+1:] for num in n)

cc(代表credit_card)是数字listncheck列表,范围从0到9。
此功能完成了第一部分:

例如:
作为输入,如果我有信用卡号cc = [1, 2, 3](始终使用从0到9的清单),

combinations = []
check = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
cc = [1, 2, 3]

for possible_combinations in makeIters(cc, check):
  combinations.append(possible_combinations)
  print(combinations)

输出将类似于:

ROWS:
  A        B        C  
1 2 0  | 1 0 3  | 0 2 3  
1 2 1  | 1 1 3  | 1 2 3
1 2 2  | 1 2 3  | 2 2 3
1 2 3  | 1 3 3  | 3 2 3
1 2 4  | 1 4 3  | 4 2 3 
1 2 5  | 1 5 3  | 5 2 3
1 2 6  | 1 6 3  | 6 2 3
1 2 7  | 1 7 3  | 7 2 3
1 2 8  | 1 8 3  | 8 2 3
1 2 9  | 1 9 3  | 9 2 3

但是,如果我要查找的电话号码是3 0 13 1 02 2 2,这将不起作用。

第2部分:
因此,如果要查找此数字,则必须对生成的每个数字执行与该函数相同的操作

第2部分的示例:

  

有效数字:3 1 0

输入:

check = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
cc = [1, 2, 3]

输出: 为了找到3 1 0,我们以Row C为例,它必须应用于每行):**

     C   | C.d (323)| C.d.a(320) 
a. 0 2 3 | 3 2 0    | 3 1 0 valid_number_found 
b. 1 2 3 | 3 2 1    | 
c. 2 2 3 | 3 2 2    | 
d. 3 2 3 | 3 2 3    | 
e. 4 2 3 | 3 2 4    | 
f. 5 2 3 | 3 2 5    | 
g. 6 2 3 | 3 2 6    | 
h. 7 2 3 | 3 2 7    | 
i. 8 2 3 | 3 2 8    | 
j. 9 2 3 | 3 2 9    | 

提示:在示例中,我使用cc,长度为3个数字,但是必须找到的数字是lengt 16。

0 个答案:

没有答案