github.com/scottcagno/storage@v1.8.0/cmd/checksum/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "github.com/scottcagno/storage/pkg/util" 6 "hash/crc32" 7 "hash/crc64" 8 "log" 9 ) 10 11 const size = 64 12 13 var ( 14 data08to16 = make([][]byte, size) 15 data16to32 = make([][]byte, size) 16 data32to64 = make([][]byte, size) 17 ) 18 19 func init() { 20 log.Println("Filling out random data") 21 for i := 0; i < size; i++ { 22 data08to16[i] = util.RandBytes(util.RandIntn(8, 16)) 23 data16to32[i] = util.RandBytes(util.RandIntn(16, 32)) 24 data32to64[i] = util.RandBytes(util.RandIntn(32, 64)) 25 } 26 } 27 28 func main() { 29 30 fmt.Println("Comparing 8-16...") 31 for i := 0; i < size; i++ { 32 s32 := ChecksumCRC32(data08to16[i]) 33 s64 := ChecksumCRC64(data08to16[i]) 34 fmt.Printf("crc32: %s -> %d\ncrc64: %s -> %d\n", data08to16[i], s32, data08to16[i], s64) 35 } 36 fmt.Println() 37 38 fmt.Println("Comparing 16-32...") 39 for i := 0; i < size; i++ { 40 s32 := ChecksumCRC32(data16to32[i]) 41 s64 := ChecksumCRC64(data16to32[i]) 42 fmt.Printf("crc32: %s -> %d\ncrc64: %s -> %d\n", data16to32[i], s32, data16to32[i], s64) 43 } 44 fmt.Println() 45 46 fmt.Println("Comparing 32-64...") 47 for i := 0; i < size; i++ { 48 s32 := ChecksumCRC32(data32to64[i]) 49 s64 := ChecksumCRC64(data32to64[i]) 50 fmt.Printf("crc32: %s -> %d\ncrc64: %s -> %d\n", data32to64[i], s32, data32to64[i], s64) 51 } 52 fmt.Println() 53 } 54 55 func ChecksumCRC32(data []byte) uint32 { 56 return crc32.Checksum(data, crc32.MakeTable(crc32.Koopman)) 57 } 58 59 func ChecksumCRC64(data []byte) uint64 { 60 return crc64.Checksum(data, crc64.MakeTable(crc64.ECMA)) 61 }