Skip to content

Instantly share code, notes, and snippets.



Created Jun 12, 2017
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.
// Not cryptographicly secure!
// Source:
//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

This comment has been minimized.

Copy link

@Gaurav-Singh-97 Gaurav-Singh-97 commented Jul 5, 2019

Wikipedia does not have an article with this exact name.


This comment has been minimized.

Copy link
Owner Author

@lmas lmas commented Jul 11, 2019

Guess that page was removed since I wrote this utility, 2 years ago or something

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment