re-design hash function
remove the code exploiting internal details of the golang implementation for following Golang compatibility guidelines
finish hash function re-design