python - 制作所有可能的数字和字母的 6 位数组合

标签 python hash sha1 python-itertools brute-force

我正在尝试对我拥有的一个哈希 key 进行暴力破解, key 是 28 位,我必须找到 6 位数字的密码,包括 0-9 和 a-z,每个位置共有 36 种可能性。

我使用的是带有 16gb 内存的 macbook,但是当我运行以下代码时,它会花费很长时间并最终杀死使用过多内存的进程,我想知道的是如何克服它,其次是否有可能而不是等待整个循环完成,然后迭代 abc 来获取所有组合,然后将它们传递给 SHA1 哈希函数,我可以在生成组合时将它们传递给哈希函数

abc = [''.join(i) for i in itertools.product("0123456789abcdefghijklmnopqrstuvwxyz",repeat=6)]

最佳答案

您可以迭代 itertools.product() 返回的对象,就像您实际上已经在使用列表理解一样,如下所示:

import itertools, string
for i in itertools.product(string.ascii_lowercase+string.digits,repeat=6):
    if check_hash("".join(i)):
        print i
        break

这只会将当前的存储在内存中。

有 (26+10)^6 = 2176782336 种可能性,所以可能仍然需要一段时间。每个占用 6 个字节,您的原始解决方案使用了 13060694016 个字节,即略多于 12 GB。

我也在使用 Python 2 的 string constants而不是输入字母和数字。

关于python - 制作所有可能的数字和字母的 6 位数组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28790015/

相关文章:

Python。如何从 JSON 获取目录路径?

delphi - Delphi 2009 最高效的 Unicode 哈希函数

asp.net-core - 在 .net Core 中像表单例份验证一样加密密码

linux-kernel - 如何在 Linux 内核中计算数组的 SHA1

php - 如何在 PHP 中同时使用多种算法对文件进行哈希处理?

Python模式导入问题

python - Matlab - 使用 h5py 在 Python 中读取 .mat 7.3 时间序列数组

python - 如何调用需要 "quotes"字符串的函数?

ruby - Ruby 中对象的哈希/数组

php - 相同的字符串,从 VB.net 和 PHP 获得的不同 SHA1 哈希值