Verified Commit 35e9ab8c authored by shelikhoo's avatar shelikhoo
Browse files

Use truncated hash instead crc64 for counted hash

parent b18e6fcf
Pipeline #41588 passed with stage
in 8 minutes and 5 seconds
package ipsetsink
import (
"bytes"
"crypto/hmac"
"encoding/binary"
"hash"
"hash/crc64"
"github.com/clarkduvall/hyperloglog"
"golang.org/x/crypto/sha3"
......@@ -31,7 +32,7 @@ func (s *IPSetSink) maskIPAddress(ipAddress string) []byte {
}
func (s *IPSetSink) AddIPToSet(ipAddress string) {
s.countDistinct.Add(crc64FromBytes{hashValue(s.maskIPAddress(ipAddress))})
s.countDistinct.Add(truncatedHash64FromBytes{hashValue(s.maskIPAddress(ipAddress))})
}
func (s *IPSetSink) Dump() ([]byte, error) {
......@@ -43,10 +44,12 @@ func (s *IPSetSink) Reset() {
}
type hashValue []byte
type crc64FromBytes struct {
type truncatedHash64FromBytes struct {
hashValue
}
func (c crc64FromBytes) Sum64() uint64 {
return crc64.Checksum(c.hashValue, crc64.MakeTable(crc64.ECMA))
func (c truncatedHash64FromBytes) Sum64() uint64 {
var value uint64
binary.Read(bytes.NewReader(c.hashValue), binary.BigEndian, &value)
return value
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment