checksum/checksum/murmur3.go
2023-08-01 15:49:57 +08:00

80 lines
1021 B
Go

package checksum
import (
"hash"
"github.com/twmb/murmur3"
)
type (
Murmur332 struct {
d hash.Hash
}
Murmur364 struct {
d hash.Hash
}
Murmur3128 struct {
d hash.Hash
}
)
func (s *Murmur332) String() string {
return "murmur3 32"
}
func (s *Murmur332) Append(data []byte) {
if s.d == nil {
s.d = murmur3.New32()
}
s.d.Write(data)
}
func (s *Murmur332) Finish() []byte {
if s.d == nil {
s.d = murmur3.New32()
}
return s.d.Sum(nil)
}
func (s *Murmur364) String() string {
return "murmur3 64"
}
func (s *Murmur364) Append(data []byte) {
if s.d == nil {
s.d = murmur3.New64()
}
s.d.Write(data)
}
func (s *Murmur364) Finish() []byte {
if s.d == nil {
s.d = murmur3.New64()
}
return s.d.Sum(nil)
}
func (s *Murmur3128) String() string {
return "murmur3 128"
}
func (s *Murmur3128) Append(data []byte) {
if s.d == nil {
s.d = murmur3.New128()
}
s.d.Write(data)
}
func (s *Murmur3128) Finish() []byte {
if s.d == nil {
s.d = murmur3.New128()
}
return s.d.Sum(nil)
}