Wyhash dan Wyrand adalah fungsi hash 64-bit yang ideal masing-masing:
Solid : Wyhash melewati Smhasher, Wyrand melewati Bigcrush, Practrand.
Portabel : Sistem 64-bit/32-bit, endian besar/kecil.
tercepat : efisien pada mesin 64-bit, terutama untuk kunci pendek.
Sederhana : Dalam arti ukuran kode.
Salted : Kami menggunakan Dynamic Secret untuk menghindari serangan yang dimaksudkan.
Wyhash adalah algoritma hashing default dari bahasa Great Zig, V, Nim dan Go (sejak 1.17). Satu tonggak adalah bahwa Wyhash telah digunakan oleh Microsoft di [Windows Terminal] (Microsoft/Terminal#13686).
Contoh sederhana:
#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);
Keterbatasan:
Sekarang diketahui bahwa Wyhash/Wyrand memiliki keterbatasan:
Keduanya tidak tahan tabrakan 64 bit, tetapi sekitar 62 bit (FlyingMutant/Cyan4973/Vigna)
Saat tes pada dataset yang lebih panjang (32TB, 23 hari), Wyrand akan gagal Practrand (Vigna)
Dan mungkin ada lebih banyak kekurangan yang terdeteksi di masa depan.
Pengguna harus membuat keputusan sendiri berdasarkan keuntungan dan kelemahan Wyhash/Wyrand karena tidak ada yang sempurna.
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 (versi final 1 && 3)
Java https://github.com/openhft/zero-allocation-hashing
Java https://github.com/dynatrace-oss/hash4j (versi final 3 dan 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
Saya berterima kasih kepada nama -nama ini:
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)
Theoneric
FlyingMutant
Vigna
Tansy