Involved Source Files Package hash provides interfaces for hash functions.
Code Examples
package main
import (
"bytes"
"crypto/sha256"
"encoding"
"fmt"
"log"
)
func main() {
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)))
}
Package-Level Type Names (total 5, all are exported)
/* sort exporteds by: | */
A Cloner is a hash function whose state can be cloned, returning a value with
equivalent and independent state.
All [Hash] implementations in the standard library implement this interface,
unless GOFIPS140=v1.0.0 is set.
If a hash can only determine at runtime if it can be cloned (e.g. if it wraps
another hash), Clone may return an error wrapping [errors.ErrUnsupported].
Otherwise, Clone must always return a nil error. BlockSize returns the hash's underlying block size.
The Write method must be able to accept any amount
of data, but it may operate more efficiently if all writes
are a multiple of the block size.( Cloner) Clone() (Cloner, error) Reset resets the Hash to its initial state. Size returns the number of bytes Sum will return. Sum appends the current hash to b and returns the resulting slice.
It does not change the underlying hash state.( Cloner) Write([]byte) (int, error)
*hash/maphash.Hash
*crypto/internal/fips140/hmac.HMAC
*crypto/internal/fips140/sha256.Digest
*crypto/internal/fips140/sha512.Digest
*crypto/sha3.SHA3
*hash/crc32.digest
*hash/fnv.sum128
*hash/fnv.sum128a
*hash/fnv.sum32
*hash/fnv.sum32a
*hash/fnv.sum64
*hash/fnv.sum64a
*crypto/md5.digest
*crypto/sha1.digest
Cloner : Hash
Cloner : internal/bisect.Writer
Cloner : io.Writer
Cloner : crypto/tls.transcriptHash
func Cloner.Clone() (Cloner, error)
func hash/maphash.(*Hash).Clone() (Cloner, error)
func crypto/internal/fips140/hmac.(*HMAC).Clone() (Cloner, error)
func crypto/internal/fips140/sha256.(*Digest).Clone() (Cloner, error)
func crypto/internal/fips140/sha512.(*Digest).Clone() (Cloner, error)
func crypto/sha3.(*SHA3).Clone() (Cloner, error)
Hash32 is the common interface implemented by all 32-bit hash functions. BlockSize returns the hash's underlying block size.
The Write method must be able to accept any amount
of data, but it may operate more efficiently if all writes
are a multiple of the block size. Reset resets the Hash to its initial state. Size returns the number of bytes Sum will return. Sum appends the current hash to b and returns the resulting slice.
It does not change the underlying hash state.( Hash32) Sum32() uint32( Hash32) Write([]byte) (int, error)
*hash/crc32.digest
*hash/fnv.sum32
*hash/fnv.sum32a
Hash32 : Hash
Hash32 : internal/bisect.Writer
Hash32 : io.Writer
Hash32 : crypto/tls.transcriptHash
func hash/crc32.New(tab *crc32.Table) Hash32
func hash/crc32.NewIEEE() Hash32
func hash/fnv.New32() Hash32
func hash/fnv.New32a() Hash32
Hash64 is the common interface implemented by all 64-bit hash functions. BlockSize returns the hash's underlying block size.
The Write method must be able to accept any amount
of data, but it may operate more efficiently if all writes
are a multiple of the block size. Reset resets the Hash to its initial state. Size returns the number of bytes Sum will return. Sum appends the current hash to b and returns the resulting slice.
It does not change the underlying hash state.( Hash64) Sum64() uint64( Hash64) Write([]byte) (int, error)
*hash/maphash.Hash
*hash/fnv.sum64
*hash/fnv.sum64a
Hash64 : Hash
Hash64 : internal/bisect.Writer
Hash64 : io.Writer
Hash64 : crypto/tls.transcriptHash
func hash/fnv.New64() Hash64
func hash/fnv.New64a() Hash64
XOF (extendable output function) is a hash function with arbitrary or unlimited output length. BlockSize returns the XOF's underlying block size.
The Write method must be able to accept any amount
of data, but it may operate more efficiently if all writes
are a multiple of the block size.( XOF) Read(p []byte) (n int, err error) Reset resets the XOF to its initial state.( XOF) Write([]byte) (int, error)
*crypto/internal/fips140/sha3.SHAKE
*crypto/sha3.SHAKE
*golang.org/x/crypto/blake2b.xof
XOF : internal/bisect.Writer
XOF : io.Reader
XOF : io.ReadWriter
XOF : io.Writer
XOF : crypto/tls.transcriptHash
The pages are generated with Goldsv0.8.4. (GOOS=linux GOARCH=amd64)