Instantly share code, notes, and snippets.

@lmas /djb2.go
Created Jun 12, 2017

Embed
What would you like to do?
djb2, a non-cryptographic hash function
package djb2
// For when you ever need to implement a dictionary hash function,
// that's good enough, simple and fast.
//
// WARNING:
// Not cryptographicly secure!
//
// Source: https://en.wikipedia.org/wiki/DJB2
//
// EXAMPLE
//
//func main() {
// fmt.Println(djb2("a"))
// fmt.Println(djb2("b"))
//}
func djb2(s string) int64 {
var hash int64 = 5381
for _, c := range s {
hash = ((hash << 5) + hash) + int64(c)
// the above line is an optimized version of the following line:
//hash = hash * 33 + int64(c)
// which is easier to read and understand...
}
return hash
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment