Have you implemented this? I think Zobrist hashing using 128 bit hash key with random representation would be much faster. I don't figure out any difficulties to implement this in C++, as it has full set of bitwise operators. In addition, if your main goal is to reduce the size of the key, why don't you use Huffman coding (as a variable length code) for the different rows. I did not calculate it, but obviously, the key will be less than 64 bit, which will improve the performance.