Golangでsha256のバイト同士を連結してハッシュ化したい。


Golangで3つの[32]byte型の変数

[code]

    a := sha256.Sum256("aaaa")
    b := sha256.Sum256("bbbb")
    c := sha256.Sum256("cccc")
    
[/code]

を連結して更にsha256を計算したいです。  
要するに`d := sha256.Sum256(a+b+c)`にようなことをしたいです。  
普通に`bytes.Join`を使ってみましたが、[]byteと[32]byteは型が違うのでできないとエラーが出てしまいました。

どのように連結したハッシュ値を求めればいいのでしょうか。




a, b, cの連結は`append(append(a[:], b[:]...),
c[:]...)`で可能ですが、連結したハッシュを求めたい場合は`Write`を使ったほうが事前に連結する必要がないので便利です。

[code]

    package main
    
    import (
        "crypto/sha256"
        "fmt"
    )
    
    func main() {
        a := sha256.Sum256([]byte("aaaa"))
        b := sha256.Sum256([]byte("bbbb"))
        c := sha256.Sum256([]byte("cccc"))
    
        hash := sha256.New()
        hash.Write(a[:])
        hash.Write(b[:])
        hash.Write(c[:])
    
        d := hash.Sum(nil)
        fmt.Println(d)
    }
    
[/code]




a, b, cの連結は`append(append(a[:], b[:]...),
c[:]...)`で可能ですが、連結したハッシュを求めたい場合は`Write`を使ったほうが事前に連結する必要がないので便利です。

[code]

    package main
    
    import (
        "crypto/sha256"
        "fmt"
    )
    
    func main() {
        a := sha256.Sum256([]byte("aaaa"))
        b := sha256.Sum256([]byte("bbbb"))
        c := sha256.Sum256([]byte("cccc"))
    
        hash := sha256.New()
        hash.Write(a[:])
        hash.Write(b[:])
        hash.Write(c[:])
    
        d := hash.Sum(nil)
        fmt.Println(d)
    }
    
[/code]

