You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sha256实现区块链时不同区块哈希值相同问题咨询

问题原因
  • 核心错误是你对crypto-js的sha256方法调用方式不符合要求:sha256仅接收1个入参作为待哈希的原始数据,你传入的this.timestamp、this.nonce、this.value、this.prevhash四个参数里,除第一个参数外剩下的都会被直接忽略,不会参与哈希计算。
  • 进一步导致两个区块哈希完全相同的原因是,直接传入数字类型的字段时,crypto-js内部无法正确识别解析,最终实际参与哈希计算的内容均为undefined,所以得到了固定的undefined对应的SHA256哈希值。
修复方案

你需要先把所有需要参与哈希计算的字段拼接为一个完整的字符串,再传给sha256方法,修改后的calculate方法参考如下:

calculate(){
  // 把所有字段序列化为字符串后拼接,再传入sha256
  const rawData = `${this.timestamp}${this.nonce}${this.value}${this.prevhash}`
  return String(sha256(rawData));
}

修改后两个区块的字段不同,拼接后的原始数据不同,得到的哈希结果就会有差异。

内容的提问来源于stack exchange,提问作者Data Universe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:36:03