python - 使用循环查找散列对象中前 d 个零的数量

标签 python python-3.x

我需要通过使用 SHA256 计算哈希字符串中前 d 个 0 的数量来确定安全级别“d”(我定义了 c_hash(mystring,sha256) 来做到这一点)。 我使用了 generate_name 函数,该函数生成一个包含 3-6 个字母的随机名字和包含 4-8 个字母的姓氏。这是我的代码:

def d_security(d):
   t0 = time.clock()
   cnt = 0
   while cnt != d:
       obj = generate_name()
       hash_obj = c_hash(obj,sha256)
       if hash_obj[:d] == d*"0":
           cnt+=1
   t1 = time.clock()
   print(t1-t0)
   return None

对于 d = 5,需要 2 分钟以上才能找到与安全级别匹配的字符串。关于如何使用另一个循环使它运行得更快的任何建议?

最佳答案

  1. d*"0" 尽管保持不变,但每次都会重新计算。也许在 while 循环会有所帮助之前计算它并将其分配给另一个变量。

  2. 如果您的代码运行缓慢,这主要不是因为循环。生成名称和散列应该占用大部分运行时间。所以要么:

    2a。生成较短的名称,或者

    2b。如果 has 函数允许,请重新设计您的哈希生成器 c_hash 以仅返回哈希值的前 d 位。毕竟您只需要这些数字,计算整个哈希值需要时间。

关于python - 使用循环查找散列对象中前 d 个零的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50382629/

相关文章:

python selenium 无法清除输入字段

python - "elif"据说是无效语法

python - 带日期的 Matplotlib - 更改每月数据的标签和刻度

Python Mechanize 向没有 ID 或名称的表单输入添加值

python - 根据特定索引处的嵌套列表中的元素过滤列表

python - 在 python 中,您应该使用 if 进行 None 检查,还是使用 `or` ?

python - 为什么我的代码不打印产品链接?

python-3.x - 是否可以使用 Python tarfile 读取和附加到 tar

python - 属性错误: 'module' object has no attribute 'cache'

python - 如何为我在 PyQt 中绘制的图形制作动画?