From 5b635b125ed1eb29a7cb38d7b67e711c8a37648b Mon Sep 17 00:00:00 2001 From: Anthony Printup Date: Fri, 15 Oct 2021 07:32:54 +0200 Subject: [PATCH] Added 64-bit variants for FNV-1 and FNV-1a --- algorithms/fnv1_64.py | 11 +++++++++++ algorithms/fnv1a_64.py | 11 +++++++++++ 2 files changed, 22 insertions(+) create mode 100644 algorithms/fnv1_64.py create mode 100644 algorithms/fnv1a_64.py diff --git a/algorithms/fnv1_64.py b/algorithms/fnv1_64.py new file mode 100644 index 0000000..c234359 --- /dev/null +++ b/algorithms/fnv1_64.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +DESCRIPTION = "FNV1 hash (64-bit)" +TYPE = 'unsigned_long' +TEST_1 = 10612290624328353880 + + +def hash(data): + val = 0xcbf29ce484222325 + for c in data: + val = ((0x100000001b3 * val) ^ c) & 0xffffffffffffffff + return val diff --git a/algorithms/fnv1a_64.py b/algorithms/fnv1a_64.py new file mode 100644 index 0000000..0bc0c4d --- /dev/null +++ b/algorithms/fnv1a_64.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +DESCRIPTION = "FNV1a hash (64-bit)" +TYPE = 'unsigned_long' +TEST_1 = 14074705352429455374 + + +def hash(data): + val = 0xcbf29ce484222325 + for c in data: + val = (0x100000001b3 * (c ^ val)) & 0xffffffffffffffff + return val