检查具有相同数据的哈希和 => 总是 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