Python生成所有可能的长度为n的字符串

And*_*w T 5 python

我正在学习道德黑客攻击.我有密码的哈希密钥和密码算法(sha256/sha512).我想解析文件中的所有字符串,并检查密码的哈希值是否与文件中每个字符串的哈希值相匹配.

生成的String可能包含小写字母,大字母和数字.

任何想法如何生成所有可能包含字母和数字的长度为n的字符串?

Cri*_*ati 7

这是一段使用[Python 3]的代码:itertools.产品(*iterables,repeat = 1).
请注意,生成的字符串数量是62 ** 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)
Run Code Online (Sandbox Code Playgroud)


lan*_*tar 5

你可以使用itertools.product

print([''.join(x) for x in itertools.product('abcABC123', repeat=3)])
['aaa',
 'aab',
 'aac',
 'aaA',
 'aaB',
 'aaC',
 'aa1',
 'aa2',
 'aa3',
 'aba',
...
Run Code Online (Sandbox Code Playgroud)

只需将您需要的剩余字符添加到输入字符串中。您可以strings为此使用模块中的常量。

请注意,这会迅速增长。;)