猿问

前进,中州SHA-256哈希

具有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哈希?


慕桂英4014372
浏览 208回答 3
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个字节不变?您运行了哪些基准测试,结果如何?
随时随地看视频慕课网APP

相关分类

Go
我要回答