checksum/checksum/fnv.go
2023-08-01 15:32:05 +08:00

148 lines
1.8 KiB
Go

package checksum
import (
"hash"
"hash/fnv"
)
type (
Fnv32 struct {
d hash.Hash
}
Fnv32a struct {
d hash.Hash
}
Fnv64 struct {
d hash.Hash
}
Fnv64a struct {
d hash.Hash
}
Fnv128 struct {
d hash.Hash
}
Fnv128a struct {
d hash.Hash
}
)
func (m *Fnv32) String() string {
return "fnv32"
}
func (m *Fnv32) Append(data []byte) {
if m.d == nil {
m.d = fnv.New32()
}
m.d.Write(data)
}
func (m *Fnv32) Finish() []byte {
if m.d == nil {
m.d = fnv.New32()
}
return m.d.Sum(nil)
}
func (m *Fnv32a) String() string {
return "fnv32a"
}
func (m *Fnv32a) Append(data []byte) {
if m.d == nil {
m.d = fnv.New32a()
}
m.d.Write(data)
}
func (m *Fnv32a) Finish() []byte {
if m.d == nil {
m.d = fnv.New32a()
}
return m.d.Sum(nil)
}
func (m *Fnv64) String() string {
return "fnv64"
}
func (m *Fnv64) Append(data []byte) {
if m.d == nil {
m.d = fnv.New64()
}
m.d.Write(data)
}
func (m *Fnv64) Finish() []byte {
if m.d == nil {
m.d = fnv.New64()
}
return m.d.Sum(nil)
}
func (m *Fnv64a) String() string {
return "fnv64a"
}
func (m *Fnv64a) Append(data []byte) {
if m.d == nil {
m.d = fnv.New64a()
}
m.d.Write(data)
}
func (m *Fnv64a) Finish() []byte {
if m.d == nil {
m.d = fnv.New64a()
}
return m.d.Sum(nil)
}
func (m *Fnv128) String() string {
return "fnv128"
}
func (m *Fnv128) Append(data []byte) {
if m.d == nil {
m.d = fnv.New128()
}
m.d.Write(data)
}
func (m *Fnv128) Finish() []byte {
if m.d == nil {
m.d = fnv.New128()
}
return m.d.Sum(nil)
}
func (m *Fnv128a) String() string {
return "fnv128a"
}
func (m *Fnv128a) Append(data []byte) {
if m.d == nil {
m.d = fnv.New128a()
}
m.d.Write(data)
}
func (m *Fnv128a) Finish() []byte {
if m.d == nil {
m.d = fnv.New128a()
}
return m.d.Sum(nil)
}