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 3, all are exported)
/* sort exporteds by: | */
Hash is the common interface implemented by all hash functions.
Hash implementations in the standard library (e.g. [hash/crc32] and
[crypto/sha256]) implement the [encoding.BinaryMarshaler], [encoding.BinaryAppender]
and [encoding.BinaryUnmarshaler] interfaces. Marshaling a hash implementation
allows its internal state to be saved and used for additional processing
later, without having to re-write the data previously written to the hash.
The hash state may contain portions of the input in its original form,
which users are expected to handle for any possible security implications.
Compatibility: Any future changes to hash or crypto packages will endeavor
to maintain compatibility with state encoded using previous versions.
That is, any released versions of the packages should be able to
decode data written with any previously released version,
subject to issues such as security fixes.
See the Go compatibility document for background: https://golang.org/doc/go1compat 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.( Hash) Write([]byte) (int, error)Hash32(interface)Hash64(interface)
crypto/internal/fips140.Hash(interface)
*crypto/internal/fips140/hmac.HMAC
*crypto/internal/fips140/sha256.Digest
*crypto/internal/fips140/sha3.Digest
*crypto/internal/fips140/sha3.SHAKE
*crypto/internal/fips140/sha512.Digest
*crypto/sha3.SHA3
golang.org/x/crypto/sha3.ShakeHash(interface)
*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
crypto/tls.constantTimeHash(interface)
*crypto/tls.cthWrapper
*golang.org/x/crypto/blake2b.digest
*golang.org/x/crypto/sha3.cshakeState
*golang.org/x/crypto/sha3.state
Hash : crypto/internal/fips140.Hash
Hash : internal/bisect.Writer
Hash : io.Writer
Hash : crypto/tls.transcriptHash
func hash/fnv.New128() Hash
func hash/fnv.New128a() Hash
func crypto.Hash.New() Hash
func crypto/hmac.New(h func() Hash, key []byte) Hash
func crypto/internal/boring.NewHMAC(h func() Hash, key []byte) Hash
func crypto/internal/boring.NewSHA1() Hash
func crypto/internal/boring.NewSHA224() Hash
func crypto/internal/boring.NewSHA256() Hash
func crypto/internal/boring.NewSHA384() Hash
func crypto/internal/boring.NewSHA512() Hash
func crypto/internal/fips140hash.Unwrap(h Hash) Hash
func crypto/md5.New() Hash
func crypto/sha1.New() Hash
func crypto/sha256.New() Hash
func crypto/sha256.New224() Hash
func crypto/sha512.New() Hash
func crypto/sha512.New384() Hash
func crypto/sha512.New512_224() Hash
func crypto/sha512.New512_256() Hash
func github.com/aws/aws-sdk-go-v2/service/internal/checksum.NewAlgorithmHash(v checksum.Algorithm) (Hash, error)
func go.pact.im/x/extraio.(*HashReader).Hash() Hash
func golang.org/x/crypto/blake2b.New(size int, key []byte) (Hash, error)
func golang.org/x/crypto/blake2b.New256(key []byte) (Hash, error)
func golang.org/x/crypto/blake2b.New384(key []byte) (Hash, error)
func golang.org/x/crypto/blake2b.New512(key []byte) (Hash, error)
func golang.org/x/crypto/sha3.New224() Hash
func golang.org/x/crypto/sha3.New256() Hash
func golang.org/x/crypto/sha3.New384() Hash
func golang.org/x/crypto/sha3.New512() Hash
func golang.org/x/crypto/sha3.NewLegacyKeccak256() Hash
func golang.org/x/crypto/sha3.NewLegacyKeccak512() Hash
func crypto/tls.cloneHash(in Hash, h crypto.Hash) Hash
func crypto/tls.macSHA1(key []byte) Hash
func crypto/tls.macSHA256(key []byte) Hash
func crypto/internal/boring.DecryptRSAOAEP(h, mgfHash Hash, priv *boring.PrivateKeyRSA, ciphertext, label []byte) ([]byte, error)
func crypto/internal/boring.EncryptRSAOAEP(h, mgfHash Hash, pub *boring.PublicKeyRSA, msg, label []byte) ([]byte, error)
func crypto/internal/fips140hash.Unwrap(h Hash) Hash
func crypto/internal/fips140only.ApprovedHash(h Hash) bool
func crypto/rsa.DecryptOAEP(hash Hash, random io.Reader, priv *rsa.PrivateKey, ciphertext []byte, label []byte) ([]byte, error)
func crypto/rsa.EncryptOAEP(hash Hash, random io.Reader, pub *rsa.PublicKey, msg []byte, label []byte) ([]byte, error)
func go.pact.im/x/extraio.NewHashReader(h Hash) *extraio.HashReader
func go.pact.im/x/extraio.NewStrippedHashReader(h Hash, n int64) io.Reader
func crypto/rsa.decryptOAEP(hash, mgfHash Hash, priv *rsa.PrivateKey, ciphertext []byte, label []byte) ([]byte, error)
func crypto/tls.cloneHash(in Hash, h crypto.Hash) Hash
func crypto/tls.computeAndUpdatePSK(m *tls.clientHelloMsg, binderKey []byte, transcript Hash, finishedHash func([]byte, Hash) []byte) error
func crypto/tls.signedMessage(sigHash crypto.Hash, context string, transcript Hash) []byte
func crypto/tls.tls10MAC(h Hash, out, seq, header, data, extra []byte) []byte
func github.com/aws/aws-sdk-go-v2/aws/signer/v4.makeHash(hash Hash, b []byte) []byte
func github.com/aws/aws-sdk-go-v2/internal/v4a.makeHash(hash Hash, b []byte) []byte
func github.com/aws/aws-sdk-go-v2/service/internal/checksum.base64EncodeHashSum(h Hash) []byte
func github.com/aws/aws-sdk-go-v2/service/internal/checksum.hexEncodeHashSum(h Hash) []byte
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 : crypto/internal/fips140.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
func github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream.decodePrelude(r io.Reader, crc Hash32) (eventstream.messagePrelude, error)
func github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream.encodePrelude(w io.Writer, crc Hash32, headersLen, payloadLen uint32) error
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/fnv.sum64
*hash/fnv.sum64a
Hash64 : Hash
Hash64 : crypto/internal/fips140.Hash
Hash64 : internal/bisect.Writer
Hash64 : io.Writer
Hash64 : crypto/tls.transcriptHash
func hash/fnv.New64() Hash64
func hash/fnv.New64a() Hash64
The pages are generated with Goldsv0.7.6. (GOOS=linux GOARCH=amd64)