2023-08-01 15:32:05 +08:00
|
|
|
package checksum
|
|
|
|
|
|
|
|
import (
|
|
|
|
"hash"
|
|
|
|
|
2023-08-01 15:49:57 +08:00
|
|
|
"github.com/twmb/murmur3"
|
2023-08-01 15:32:05 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
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)
|
|
|
|
}
|