Skip to content

Instantly share code, notes, and snippets.

@CaledoniaProject
Forked from lmas/djb2.go
Created July 22, 2018 14:37
Show Gist options
  • Save CaledoniaProject/fb4465907bcf95cdfe6583a604ca380c to your computer and use it in GitHub Desktop.
Save CaledoniaProject/fb4465907bcf95cdfe6583a604ca380c to your computer and use it in GitHub Desktop.
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