main.go 531 Bytes
Newer Older
Jakub Sztandera's avatar
Jakub Sztandera committed
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
// This file generates bytehash LUT
package main

import (
	"fmt"
	"math/rand"
)

const nRounds = 200

func main() {
	rnd := rand.New(rand.NewSource(0))

	lut := make([]uint32, 256)
	for i := 0; i < 256/2; i++ {
		lut[i] = 1<<32 - 1
	}

	for r := 0; r < nRounds; r++ {
		for b := uint32(0); b < 32; b++ {
			mask := uint32(1) << b
			nmask := ^mask
			for i, j := range rnd.Perm(256) {
				li := lut[i]
				lj := lut[j]
				lut[i] = li&nmask | (lj & mask)
				lut[j] = lj&nmask | (li & mask)
			}
		}
	}

	fmt.Printf("%#v", lut)
}