我正在学习道德黑客攻击。我有密码的哈希密钥和密码算法(sha256 / sha512)。我想解析文件中的所有字符串,并检查密码的哈希值是否与文件中每个字符串的哈希值匹配。
生成的String可能包含小写字母,大字母和数字。
如何生成所有可能包含字母和数字的长度为n的字符串?
答案 0 :(得分:6)
以下是使用[Python 3]: itertools.product(*iterables, repeat=1)的一段代码。
请注意,生成的字符串数量为62 ** length
,因此出于测试目的,使用小值 length :
import string
import itertools
def generate_strings(length=3):
chars = string.ascii_letters + string.digits # "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for item in itertools.product(chars, repeat=length):
yield "".join(item)
答案 1 :(得分:3)
您可以使用itertools.product
:
print([''.join(x) for x in itertools.product('abcABC123', repeat=3)])
['aaa',
'aab',
'aac',
'aaA',
'aaB',
'aaC',
'aa1',
'aa2',
'aa3',
'aba',
...
只需将所需的剩余字符添加到输入字符串即可。您可以使用strings
模块中的常量来实现此目的。
请注意,这会迅速增长。 ;)
答案 2 :(得分:2)
from itertools import product
from string import ascii_letters, digits
for i in product(ascii_letters + digits, repeat=n):
print(''.join(i))