gpt4 book ai didi

python - 与以前不同的是生成随机字符串

转载 作者:行者123 更新时间:2023-11-28 18:32:10 25 4
gpt4 key购买 nike

作为练习,我正在尝试用 Python 编写密码破解程序,我注意到平均需要 586,634 次迭代才能破解密码“hey”。我认为它是如此之高,因为它可以自由生成一个可能已经被检查过的随机字符串。例如,当它已经发现它不起作用时,它可能会生成以下内容并使用额外的时间来这样做。

a!?h[jjpco$w01ga5ba!?01g

那么如何阻止 Python 反复生成相同的字符串呢?

这是我的代码(它生成的长度由输入的长度决定):

while crack!=password:
i+=1
crack=''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for _ in range(length))

最佳答案

试试这个。它生成所有可能的 3 个字母组合。您可以将 2 替换为您想要的任何长度。另请注意,我将 product 产生的迭代器转换为 list。如果您只需要循环一次,最好不要先将其转换为 list,因为那样会占用更多内存。只需摆脱 list() 函数调用即可。

import itertools
import string

letters = string.lowercase + string.uppercase + string.punctuation + string.digits
all_possible = list(itertools.product(letters, repeat=3))
test_pws = ['hey', 'h9!', '!!!']
for i,possible_pw in enumerate(all_possible):
pw = "".join(possible_pw)
if pw in test_pws:
print 'Found ', pw, ' at iteration ', i

print all_possible[:5]
print len(all_possible)
print len(set(all_possible))
print all_possible[-5:]

输出

Found  hey  at iteration  62252
Found h9! at iteration 70646
Found !!! at iteration 464412

[('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ('a', 'a', 'd'), ('a', 'a', 'e')]
830584
830584
[('9', '9', '5'), ('9', '9', '6'), ('9', '9', '7'), ('9', '9', '8'), ('9', '9', '9')]

关于python - 与以前不同的是生成随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com