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