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

news/2024/11/19 10:21:24/文章来源:https://www.cnblogs.com/shuinanxun/p/18554334

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

代码如下:

import hashlib
import time
from datetime import timedelta
from plyer import notificationdef find_hash_with_prefix_zeros(prefix_length=6):# 初始字符串base_text = "Hello, World!"# 计数器counter = 0while True:# 构建新的字符串text = f"{base_text}{counter}"# 计算哈希值hash_value = hashlib.sha256(text.encode()).hexdigest()# print(f"hash_value:{hash_value}")# 检查哈希值前缀是否包含指定数量的0if 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】,欢迎大家订阅,我会同步文章到公众号上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836676.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

StopWatch使用

调试查看耗时的一个便捷类,一般只使用三个方法StopWatch stopWatch = new StopWatch();stopWatch.start("获取对象");//逻辑代码xxxxxxxxxxxstopWatch.stop();log.info(stopWatch.prettyPrint()); //打印详细信息

IDEA svn项目 更换SVN地址

原svn项目地址URL1,后来把项目移到了URL2,但自己的SVN地址是URL1且已改了好多东西,不想down URL2源码再改。 解决方法: 原文链接:https://blog.csdn.net/weixin_35721320/article/details/79290369

值得推荐的IT公司名单(广州篇)

广州,作为中国南方的重要城市,不仅历史悠久,而且在科技创新方面也具有极高的活力。特别是在IT领域,广州孕育了许多知名企业和创业公司,成为众多技术人才的聚集地。本文将介绍一些在广州值得去的IT公司,为那些希望在广州发展的技术人才提供参考。 互联网大厂 1、腾讯:作为…

项目经理必备:如何通过管理工具提高执行效率?

在瞬息万变的商业环境中,项目经理如同掌舵人,引领团队穿越风浪,确保项目按时、按质、按预算完成。然而,面对日益复杂的项目需求和不断变化的市场环境,仅凭传统的管理方式已难以满足高效执行的需求。此时,借助先进的项目管理工具,成为了项目经理提升执行效率、实现项目成…

PAM限制实测

计算节点pam限制调度系统slurm提供了pam插件,可以实现如下功能: 当且仅当计算节点运行普通用户作业的情况下,该用户才可以通过ssh登录该计算节点。 计算节点的调度系统安装后,在/lib64/security下存在如下三个库文件: /lib64/security/pam_slurm_adopt.a /lib64/security/…

linux学习day02_常用命令学习

1、那个 ~ 符号代表的是“使用者的主文件夹”的意思,他是个“变量!”举例来说,root的主文件夹在/root, 所以 ~ 就代表/root的意思 至于提示字符方面,在Linux当中,默认root的提示字符为 # ,而一般身份使用者的提示字符 为 $ .在 Linux 系统中,英文大小写字母是不一样的。…

赋能业务,驱动未来,科华数据召开CRM平台升级项目启动会

11月13日,全球卓越的智慧电能解决方案提供商-科华数据股份有限公司(以下简称“科华数据”)CRM平台升级项目启动会在厦门顺利举行。科华集团总裁陈四雄、科华数能总裁崔剑、科华数通副总裁林清民、纷享销客高级副总裁江水、中南战区交付总经理徐延涛、深圳分公司总经理杨小会…

使用Pytorch构建视觉语言模型(VLM)

视觉语言模型(Vision Language Model,VLM)正在改变计算机对视觉和文本信息的理解与交互方式。本文将介绍 VLM 的核心组件和实现细节,可以让你全面掌握这项前沿技术。我们的目标是理解并实现能够通过指令微调来执行有用任务的视觉语言模型。 总体架构VLM 的总体架构包括:图…

实现高性能数据同步:旺店通数据写入金蝶云星空

高效数据集成案例:从旺店通到金蝶云星空旺店通其他出库单同步--114:从旺店通企业奇门到金蝶云星空的数据集成案例 在现代企业的运营中,数据的高效流动和精准管理是提升业务效率的关键。本文将分享一个实际运行的系统对接集成案例——“旺店通其他出库单同步--114”,展示如何…

高效团队如何破除跨部门协作的瓶颈?这篇文章告诉你!

在瞬息万变的商业环境中,企业面临着愈加复杂的挑战:跨部门的协作如何更高效?资源分配如何更精准?项目进度如何实时可控?这一系列问题的解决方案,不再仅仅依赖传统的经验管理,而是逐步转向技术驱动。项目管理软件正是在这样的需求场景中诞生,并快速成为各行业不可或缺的…

StarRocks 物化视图刷新流程及原理

前段时间给 StarRocks 的物化视图新增了一个特性,那也是我第一次接触 StarRocks,因为完全不熟悉这个数据库,所以很多东西都是从头开始了解概念。 为了能顺利的新增这个特性(具体内容可以见后文),我需要把整个物化视图的流程串联一遍,于是便有了这篇文章。 在开始之前简单…

不能用AI解决的RSA题目

RSA基础 e,n是公开钥匙 d是私用钥匙 c是密文 m是明文(包含flag) n = pq d = invert(e, (p-1)(q-1)) m = pow(c, d, n) # 解密 flag = long_to_bytes(m) #转文字1、相邻素数 q = gmpy2.next_prime(p) p和q挨得很近解题代码: from Crypto.Util.number import * from…