Имея 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
При обсуждении этого вопроса на биткойн-форуме кто-то упомянул, что могут быть некоторые проблемы с получением этого среднего хэша.
Как рассчитать хэш SHA-256 среднего состояния в Google Go?
h.Sum([]byte{})
для возврата - person emicklei   schedule 19.02.2013h.Sum(nil)
тоже подходит, @emicklei :-) - person elimisteve   schedule 30.03.2013