具有128个字节的数据,例如:00000001c570c4764aadb3f09895619f549000b8b51a789e7f58ea750000709700000000103ca064f8c76c390683f8203043e91466a7fcc40e6ebc428fbcc2d89b574a864db8345b1b00b5ac00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000想要对它执行SHA-256散列,必须将其分成两个64字节的数据并分别散列,然后再将结果散列在一起。如果经常更改数据后半部分的某些位,则可以简化计算并仅对数据的前半部分进行哈希处理。如何在Google Go中做到这一点?我试过打电话func SingleSHA(b []byte)([]byte){ var h hash.Hash = sha256.New() h.Write(b) return h.Sum()}但是没有正确的答案e772fc6964e7b06d8f855a6166353e48b2562de4ad037abc889294cea8ed1070我有12E84A43CBC7689AE9916A30E1AA0F3CA12146CBF886B60103AEC21A5CFAA268在比特币论坛上讨论此事时,有人提到获取中间状态哈希值可能会有一些问题。如何在Google Go中计算中间状态SHA-256哈希?
3 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
我使用Intel i5 2.70 GHz CPU在您的128字节数据上运行了两个Go基准测试。首先,我执行了1000次,将所有128个字节写入SHA256哈希并读取了总和,总共花费了大约9,285,000纳秒。其次,我将前64个字节一次写入SHA256哈希,然后重复1000次,将后64个字节写入SHA256哈希的副本并读取总和,总共花费了约6,492,371纳秒。假定前64个字节是不变的,第二个基准测试比第一个基准测试节省了30%的时间。
使用第一种方法,您每天可以计算大约9,305,331,179 SHA256 128字节总和,然后再购买更快的CPU。使用第二种方法,您可以每天计算13,307,927,103个SHA256 128字节总和,假设前64个字节连续1000次不变,然后再购买更快的CPU。您每天需要计算多少SHA256 128字节总和?每天有多少个SHA256 128字节总和是前64个字节不变?
您运行了哪些基准测试,结果如何?
- 3 回答
- 0 关注
- 207 浏览
添加回答
举报
0/150
提交
取消