2
0

hashing.zig 608 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const std = @import("std");
  2. pub fn hashKey(k: []const u8) u32 {
  3. return fnv1a(k);
  4. }
  5. pub fn fnv1a(key: []const u8) u32 {
  6. var hash: u32 = 2166136261;
  7. for (key) |c| {
  8. hash ^= c;
  9. hash *%= 16777619;
  10. }
  11. return hash;
  12. }
  13. pub fn xoramasrosas(k: []const u8) u32 {
  14. var hash: u32 = 17 * 22;
  15. const x = "xoramasrosas";
  16. for (k, 0..) |char, i| {
  17. hash = hash +% (char ^ x[i % 12]) << 12;
  18. }
  19. return hash;
  20. }
  21. pub fn djb2(key: []const u8) u32 {
  22. var hash: u32 = 5381;
  23. for (key) |c| {
  24. hash = ((hash << 5) +% hash) +% c;
  25. }
  26. return hash;
  27. }