| | |
| | |
| | |
| |
|
| | package hash_test |
| |
|
| | import ( |
| | "bytes" |
| | "crypto/sha256" |
| | "encoding" |
| | "fmt" |
| | "log" |
| | ) |
| |
|
| | func Example_binaryMarshaler() { |
| | const ( |
| | input1 = "The tunneling gopher digs downwards, " |
| | input2 = "unaware of what he will find." |
| | ) |
| |
|
| | first := sha256.New() |
| | first.Write([]byte(input1)) |
| |
|
| | marshaler, ok := first.(encoding.BinaryMarshaler) |
| | if !ok { |
| | log.Fatal("first does not implement encoding.BinaryMarshaler") |
| | } |
| | state, err := marshaler.MarshalBinary() |
| | if err != nil { |
| | log.Fatal("unable to marshal hash:", err) |
| | } |
| |
|
| | second := sha256.New() |
| |
|
| | unmarshaler, ok := second.(encoding.BinaryUnmarshaler) |
| | if !ok { |
| | log.Fatal("second does not implement encoding.BinaryUnmarshaler") |
| | } |
| | if err := unmarshaler.UnmarshalBinary(state); err != nil { |
| | log.Fatal("unable to unmarshal hash:", err) |
| | } |
| |
|
| | first.Write([]byte(input2)) |
| | second.Write([]byte(input2)) |
| |
|
| | fmt.Printf("%x\n", first.Sum(nil)) |
| | fmt.Println(bytes.Equal(first.Sum(nil), second.Sum(nil))) |
| | |
| | |
| | |
| | } |
| |
|