mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-25 23:14:59 -07:00
Add hash.djbx33a
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
package hash
|
||||
|
||||
djbx33a :: proc(data: []byte) -> (result: [16]byte) #no_bounds_check {
|
||||
state := [4]u32{5381, 5381, 5381, 5381}
|
||||
|
||||
s: u32 = 0
|
||||
for p in data {
|
||||
state[s] = (state[s] << 5) + state[s] + u32(p)
|
||||
s = (s + 1) & 3
|
||||
}
|
||||
|
||||
|
||||
(^u32le)(&result[0])^ = u32le(state[0])
|
||||
(^u32le)(&result[4])^ = u32le(state[1])
|
||||
(^u32le)(&result[8])^ = u32le(state[2])
|
||||
(^u32le)(&result[12])^ = u32le(state[3])
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user