Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 随机蛮力器_Python_Python 3.x_Random_Brute Force - Fatal编程技术网

Python 随机蛮力器

Python 随机蛮力器,python,python-3.x,random,brute-force,Python,Python 3.x,Random,Brute Force,出于教育目的,我做了一个简单的蛮力器。然而,由于它是如何工作的,我在早期获得结果的可能性非常小。这就是说,我想随机化的结果,而不会得到重复,也不会大幅放缓 目前的准则是: from threading import Thread charset = ( 'abcdefghijklmnopqrstuvwxyz' '1234567890' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ) def recurse(width, posit

出于教育目的,我做了一个简单的蛮力器。然而,由于它是如何工作的,我在早期获得结果的可能性非常小。这就是说,我想随机化的结果,而不会得到重复,也不会大幅放缓

目前的准则是:

from threading import Thread

charset = (
        'abcdefghijklmnopqrstuvwxyz'
        '1234567890'
        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
)

def recurse(width, position, base_string):
    for i in range(len(charset)):
        if position < (width - 1):
            Thread(target=recurse(width, position+1,base_string+charset[i])).start()
        Thread(target=write_content(base_string+charset[i]+'\n')).start()

def write_content(content):
    with open('permutations', 'a+') as f:
            f.write(content)

if __name__ == '__main__':
    recurse(15,0,'')
我会得到一些大致如下的信息:

aaa
bac
cba
abc
bbc
ccc
...
我该怎么办?我想了一段时间,就是想不出来

另外,哪种语言处理这个问题最快?

请查看随

这将生成长度为3的所有排列,因此随着长度的增长,排列速度将显著降低。长度3在我的机器上几乎是即时的,长度

5生成了一个内存错误:-)

您有一个字符集,一个要从中选择的字符列表,那么为什么不从这个字符集中选择一个随机字符呢?使用python的 模块应该让您相当容易地完成这项工作

如果您在每一步的字符串字符集中选择一个随机索引,它应该具有您想要的效果

编辑:我意识到我没有回答你问题的第二部分-我建议创建一个已检查字符串的列表。在每次尝试之后(即在每个随机生成的字符串之后),您可以将该字符串添加到所述列表中。然后,当您生成一个新字符串时,对照此列表检查它以确保它没有被再次使用


如果您将字符串添加到“used”列表中,使其排序(如),则可以使用a来加快排序速度。如果您按照这些步骤操作,您应该可以为长度更大的字符串/更长的检查集节省大量时间。

继续。。。itertools模块中有什么可以生成随机排序的结果而不重复?
aaa
bac
cba
abc
bbc
ccc
...
chars = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ps = [p for p in itertools.permutations(chars, 3)]
random.shuffle(ps)