检查具有相同数据的哈希和 => 总是 2 个不同的和
Checking hash sums with same data => Always 2 different sums
我正在 Python 中开发工作量证明系统。
为了生成哈希值,我使用了这个函数
from Cryptodome.Hash import SHA256
def blockhash(sender, msg, signature, nonce, timestamp):
h = SHA256.new()
hash_str = str(sender) + str(msg) + str(signature) + str(nonce) + str(timestamp)
h.update(hash_str.encode())
finalhash = h.hexdigest()
return finalhash
当我生成“交易”时,它会进行工作量证明,同时将其递增 1 并查看哈希是否以 4 个零开头。
while finalhash[:4] != "0000":
finalhash = blockhash(self.sender, self.msg, self.signature, self.nonce, self.timestamp)
self.nonce += 1
print(str(self.nonce))
print(finalhash)
如果交易以两个零开头,它会将此文件放入字典中。该词典被写入文本文件。当我想验证此交易并查看值是否真正匹配哈希值时,即使使用相同的数据,我也总是得到错误的哈希值。
finalhash = blockhash(t["sender"], t["msg"], t["signature"], t["nonce"], t["timestamp"])
编辑:
输入值都被转换为字符串。发件人、消息和签名是字节,其中随机数是整数,时间戳是浮点数。
解决方法:
我自己发现的。
随机数稍后会递增。
如果我想找出我需要将 nonce 减一的哈希值,那么它就会匹配。
我的错。在计算哈希
之前简单地输入self.nonce += 1
我正在 Python 中开发工作量证明系统。
为了生成哈希值,我使用了这个函数
from Cryptodome.Hash import SHA256
def blockhash(sender, msg, signature, nonce, timestamp):
h = SHA256.new()
hash_str = str(sender) + str(msg) + str(signature) + str(nonce) + str(timestamp)
h.update(hash_str.encode())
finalhash = h.hexdigest()
return finalhash
当我生成“交易”时,它会进行工作量证明,同时将其递增 1 并查看哈希是否以 4 个零开头。
while finalhash[:4] != "0000":
finalhash = blockhash(self.sender, self.msg, self.signature, self.nonce, self.timestamp)
self.nonce += 1
print(str(self.nonce))
print(finalhash)
如果交易以两个零开头,它会将此文件放入字典中。该词典被写入文本文件。当我想验证此交易并查看值是否真正匹配哈希值时,即使使用相同的数据,我也总是得到错误的哈希值。
finalhash = blockhash(t["sender"], t["msg"], t["signature"], t["nonce"], t["timestamp"])
编辑:
输入值都被转换为字符串。发件人、消息和签名是字节,其中随机数是整数,时间戳是浮点数。
解决方法: 我自己发现的。 随机数稍后会递增。 如果我想找出我需要将 nonce 减一的哈希值,那么它就会匹配。 我的错。在计算哈希
之前简单地输入self.nonce += 1