Wyhash и Wyrand являются идеальной 64-битной хэш-функцией и PRNG соответственно:
Сплош : Wyhash прошел Смхашер, Wyrand прошел BigCrush, Practrand.
Портатив : 64-битная/32-битная система, Большая/Маленькая Эндиан.
Самый быстрый : эффективно на 64-битных машинах, особенно для коротких ключей.
Самый простой : в смысле размера кода.
Соленый : мы используем динамический секрет, чтобы избежать предполагаемой атаки.
Wyhash - это алгоритм хеширования по умолчанию великого языка Zig, V, NIM и GO (с 1.17). Одна веха заключается в том, что Wyhash развернут Microsoft на [Windows Terminal] (Microsoft/Terminal#13686).
Простой пример:
#include "wyhash.h"
uint64_t _wyp[4];
make_secret(time(NULL),_wyp);
string s="fcdskhfjs";
uint64_t h=wyhash(s.c_str(),s.size(),0,_wyp);
Ограничения:
Теперь известно, что у Wyhash/Wyrand есть свои ограничения:
Оба они не являются 64 -битным стойким столкновением, но составляют около 62 бит (Flyingmutant/Cyan4973/Vigna)
При тестировании на более длинный набор данных (32 ТБ, 23 дня), Wyrand пройдет с провал Practrand (Vigna)
И в будущем может быть обнаружено больше недостатков.
Пользователь должен принимать собственное решение, основанное на преимуществе и недостатках Wyhash/Wyrand, поскольку никто не идеален.
C# https://github.com/cocowalla/wyhash-dotnet
C ++ https://github.com/tommyettinger/waterhash
C ++ https://github.com/alainesp/wy
Go https://github.com/dgryski/go-wyhash
Go https://github.com/orisano/wyhash
Go https://github.com/littleli/go-wyhash16
Go https://github.com/zeebo/wyhash
Go https://github.com/lonewolf3739/wyhash-go
Go https://github.com/zhangyunhao16/wyhash (окончательная версия 1 && 3)
Java https://github.com/openhft/zere-location-hashing
Java https://github.com/dynatrace-oss/hash4j (окончательная версия 3 и 4)
Kotlin Multiplatform https://github.com/appmattus/crypto/tree/main/cryptohash
Nim https://github.com/nim-lang/nim/blob/devel/lib/pure/hashes.nim
Nim https://github.com/jackhftang/wyhash.nim
Nim https://github.com/littleli/nim-wyhash16
Rust https://github.com/eldruin/wyhash-rs
Swift https://github.com/lemire/swiftwyhash
Swift https://github.com/lemire/swiftwyhashbenchmark
Swift https://github.com/jeudesprits/pswyhash
V https://github.com/vlang/v/tree/master/vlib/hash/wyhash (v4)
Zig https://github.com/mandejan/zig-wyhash
absl hashmap https://github.com/abseil/abseil-cpp/blob/master/absl/hash/internal/low_level_hash.h
Я благодарю эти имена:
Reini Urban
Дитрих Эпп
Джошуа Хаберман
Томми Эттингер
Даниэль Лемир
ОТМАР ЭРТЛ
Коковалла
Лео-Юрий
Диего Барриос Ромеро
Поли-Г
Дамблоб
Янн Колле
ivte-ms
Hyb
Джеймс Зм Гао
EasyASPI314 (Девин)
Теонерский
Летающий мутант
Винья
Танси