hash - 查找 hash() 以 0000 开头的字符串
问题描述
我的教授给我一个任务,不幸的是我真的很困惑。
任务:
找到一个字符串 D1,其中 hash(D1) 包含 4 个等于 0 的第一个字节。所以它应该看起来像“0000 .....”
据我所知,我们不能仅仅解密一个哈希值,并且一个一个地检查它们是一种毫无意义的工作。
解决方案
我的教授有一个任务...
找到一个字符串 D1,其中 hash(D1) 包含 4 个等于 0 的第一个字节。所以它应该看起来像“0000 .....”
据我所知,我们不能仅仅解密一个哈希值,并且一个一个地检查它们是一种毫无意义的工作。
在这种情况下,这项工作似乎并不是真的“毫无意义”。相反,您正在做这项工作,因为您的教授要求您这样做。
一些评论者提到您可以将比特币区块链视为哈希的来源,但这只有在您感兴趣的哈希与比特币使用的哈希相同时才有效(双 SHA256!)
一般来说,解决这个问题的最简单方法就是暴力破解它:
伪代码 a la python
for x in range(10*2**32): # Any number bigger than about 4 billion should work
x_str = str(x) # Any old method to generate some bytes to hash should work
x_bytes = x_str.encode('utf-8')
hash_bytes = hash(x_bytes) # assuming hash() returns bytes
if hash_bytes[0:4] == b'\x00\x00\x00\x00':
print("Found string: {}".format(x_str))
break
推荐阅读
- scala - scala流处理,计算每个日期的出现次数
- mysql - 没有结果匹配时加入表
- typescript - 授权不记名令牌?
- powershell - Private Git Repo - 使用“2”参数调用“DownloadFile”的异常:“请求被中止:连接意外关闭。”
- mysql - 具有来自其他表的转置值的 MySQL 视图
- node.js - Multer 正在返回一个空响应
- hive - 通过 oozie 运行 hive 操作时,如何解决问题 - “与 Thrift 服务器通信时出现未知 HS2 问题。?”
- java - 如何通过网络从计算机2连接到位于计算机1上的mysql服务器?
- ios - “此时无法安装此应用程序”错误 Xcode
- office-js - Office.js Beta 版 - 如何创建旭日形图