import hashlib
previous_proof = 0
new_proof = 0
check_proof = False
while check_proof is False:
hash_operation = hashlib.sha256(str(new_proof**2 - previous_proof**2).encode()).hexdigest()
if hash_operation[:4] == '0000':
check_proof = True
else:
new_proof+=1
print(hash_operation)
print( new_proof)我编写了这个脚本,用于在sha256中查找以'0000‘开头的字符串。谁能解释一下,为什么我把‘000000’而不是'0000‘放在上面会花更多的时间来查找字符串?它应该花费更少的时间,因为我在开始时有更多的零,对吗?
发布于 2020-10-08 02:11:11
与'0000‘相比,以'000000’开头的散列要少得多,因为这是允许开始的限制。
在/假设均匀分布的情况下,这是256 (288)倍:所以使用大约256倍的长度似乎是合理的。
考虑到对于每个‘000000’4个字符的开始,还有'0000‘-’0000FF‘6个字符的开始,其中位置5和6的字符的256 ('00'-'FF')可能性中只有1 ('00')个匹配。
Matches 4? Matches 6?
0000 00 Yes Yes
0000 01 Yes No
0000 10 Yes No
0000 11 Yes No
(many more) Yes Nohttps://stackoverflow.com/questions/64249840
复制相似问题