如何创建哈希 Sha-256,其中哈希的前 3 个字符为零?

问题描述 投票:0回答:3

我想创建一个哈希 Sha-256,其中哈希的前 3 个字符为零。

我正在

Python
上执行此代码:

import hashlib

hashsha = hashlib.sha256()
n=input(10)
hashsha.update(n.encode())
print (hashsha.hexdigest())

输出是

2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3

但是我想要这样的哈希值

00024232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3。

我做了一些研究,但没有发现任何东西。

python hash
3个回答
0
投票

你基本上应该继续尝试...找到哈希冲突并不容易,即使是几个数字。

此代码将为您找到一些:

import hashlib

hashsha = hashlib.sha256()

for n in range(1000000):
    hashsha.update(str(n).encode())
    h = hashsha.hexdigest()
    if h.startswith("000"):
        print(f'String: "{n}" Hash: {h}')

输出:

String: "2629" Hash: 0007d4960f1c22f3e8ba3f7f4e927de97383ea3ca5bf3d86342e149f693a65c3
String: "4316" Hash: 000c5df2f4ee5da1eadafa896a5f2a92cdf01a712a95ae56776986e353bb6e2b
String: "6073" Hash: 00020de5ef9d424991c213955e1b21b63cf25740a6e1a9d7e14f76dcd6f12022
...

0
投票
for i in range(10000):
    string = f"number_{i}".encode()
    hashsha = hashlib.sha256(string).hexdigest()
    if '000' == hashsha[:3]:
        print(string)

所以这是一个数字:

hashlib.sha256(b'number_4283').hexdigest()

输出为:

000a16ff44e6501bb2c4f72e8fa51c5b0acbfb87bfa85b05e512a05b78726623


0
投票

执行时间角度来看:

哈希值中每增加一个前导零,大约会消耗 16 倍的资源。例如找到一个零需要 10 毫秒,然后找到 3 个前导零应该需要 16^2 * 10 毫秒。

我还发表了一篇 在 Medium 中使用 Python 的文章,将前导零的速度提高了 10 倍

您可以访问这里:

在 SHA 哈希中查找带前导零的字符串的快速方法!

© www.soinside.com 2019 - 2024. All rights reserved.