Wyhash und Wyrand sind die ideale 64-Bit-Hash-Funktion bzw. PRNG:
Solid : Wyhash passierte Smhasher, Wyrand passierte Bigcrush, PracTrand.
Tragbar : 64-Bit/32-Bit-System, Big/Little Endian.
Am schnellsten : Effizient für 64-Bit-Maschinen, insbesondere für kurze Schlüssel.
Einfachste : Im Sinne der Codegröße.
Salzen : Wir verwenden dynamisches Geheimnis, um einen beabsichtigten Angriff zu vermeiden.
Wyhash ist der Standard -Hashing -Algorithmus der großen Zick-, V-, Nim- und Go -Sprache (seit 1.17). Ein Meilenstein ist, dass Wyhash von Microsoft unter [Windows Terminal] (Microsoft/Terminal Nr. 13686) bereitgestellt hat.
Einfaches Beispiel:
#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);
Einschränkungen:
Es ist jetzt bekannt, dass Wyhash/Wyrand ihre Grenzen hat:
Beide sind nicht 64 -Bit -Kollisionsbeständigkeit, sondern sind ungefähr 62 Bit (FlyingMutant/Cyan4973/Vigna)
Beim Test auf einem längeren Datensatz (32 TB, 23 Tage) wird Wyrand PracTrand (VIGNA) fehlschlagen
Und es kann in Zukunft mehr Mängel feststellen.
Der Benutzer sollte den Vorteil und die Mängel von Wyhash/Wyrand auf den Vorteil und die Mängel ausmachen, da niemand perfekt ist.
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/zhangyunhao116/wyhash (endgültige Version 1 && 3)
Java https://github.com/openhft/zero-location-hashing
Java https://github.com/dynatrace-oss/hash4j (endgültige Version 3 und 4)
Kotlin multiplattform 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
Rost 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
ABL HashMap https://github.com/abseil/abseil-cpp/blob/master/absl/hash/internal/low_level_hash.h
Ich danke diesen Namen:
Reini Urban
Dietrich Epp
Joshua Haberman
Tommy Ettinger
Daniel Lemire
OTMAR ERTL
Cocowalla
Leo-yuriev
Diego Barrios Romero
Paulie-G
Dumblob
Yann Collet
IVTE-MS
Hyb
James Zm Gao
easyaspi314 (Devin)
Theonic
FlyingMutant
Vigna
Tansy