模拟计算hash前面N个0需要的时间

写了一个python代码用来模拟计算当hash前面有N个0时需要多长时间。

代码如下:

import hashlib
import time
from datetime import timedelta
from plyer import notification


def find_hash_with_prefix_zeros(prefix_length=6):
    # 初始字符串
    base_text = "Hello, World!"
    # 计数器
    counter = 0

    while True:
        # 构建新的字符串
        text = f"{base_text}{counter}"
        # 计算哈希值
        hash_value = hashlib.sha256(text.encode()).hexdigest()
        # print(f"hash_value:{hash_value}")

        # 检查哈希值前缀是否包含指定数量的0
        if hash_value.startswith('0' * prefix_length):
            notification.notify(
                title="通知",
                message="hash计算完成",
                app_name="hash计算",
                timeout=10  # 通知显示的时间,单位为秒
            )
            print(f"Found after {counter} attempts:")
            print(f"Text: {text}")
            print(f"Hash: {hash_value}  prefix_length={prefix_length}")
            break

        # 增加计数器
        counter += 1
        # print(f"counter:{counter}")


# 计算某个函数需要运行多长时间
def measure_runtime(func, *args, **kwargs):
    # 记录开始时间
    start_time = time.time()
    # 调用函数
    func(*args, **kwargs)
    # 记录结束时间
    end_time = time.time()
    # 计算运行时间(秒)
    runtime_seconds = end_time - start_time
    # 将运行时间转换为 timedelta 对象
    runtime = timedelta(seconds=runtime_seconds)
    # 打印运行时间,格式为小时:分钟:秒
    print(f"函数运行时间: {runtime}")


def main():
    # 调用函数,寻找前缀包含N个0的哈希值
    measure_runtime(find_hash_with_prefix_zeros, prefix_length=6)


if __name__ == '__main__':
    main()

计算过程打印日志如下:

 

hash前面N个0的时间记录:

 

hash前面几个0

计算的时长

1

1毫秒

2

1毫秒

3

1毫秒

4

0.24秒

5

1.35秒

6

10.97秒

7

3分31秒

8

1小时28分

9

4天

 
 
 

9个0就需要4天时间了:

 

我们可以大概预估下:

 

10

40天

11

400天

 
 
 

后面的就不跑了,btc目前前导19个0,可想而知像btc的挖矿难度了。

随着0的数量的增加,计算的时长就越长:

 

我电脑的配置:AMD Ryzen 7 8845HS w/ Radeon 780M Graphics 3.80 GHz

这篇分享文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。

想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。

感谢你的阅读与支持,期待在未来的文章中与你再次相遇!

我的微信公众号:【xdub】,欢迎大家订阅,我会同步文章到公众号上。

posted @ 2024-11-19 10:18  一方_self  阅读(2)  评论(0编辑  收藏  举报