检查具有相同数据的哈希和=>总是2个不同的和

2024-05-29 02:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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"])

编辑:
所有的输入值都被转换成一个字符串。sender、msg和signature是字节,其中nonce是整数,timestamp是浮点


Tags: self证明系统msghash事务timestampsender

热门问题