Skip to main content

Non Cryptographic Hashes

These are fast hashes for non security purposes. They are NOT cryptographically secure. An attacker can easily cause collisions.

XXH32​

local XXH32 = Cryptography.Hashing.XXH32

XXH32(Message: buffer, Seed: number?) -> number​

Extremely fast non cryptographic hash.

local Hash = XXH32(buffer.fromstring("test"), 0)
print(Hash) -- 32 bit integer

Use this for hash tables, bloom filters, checksums, or anywhere you need a fast hash and do not care about security.

MurMur​

local MurMur = Cryptography.Hashing.MurMur

MurMur(Message: buffer, Seed: number?) -> number​

Another fast non cryptographic hash function with good distribution.

local Hash = MurMur(buffer.fromstring("test"), 0)
print(Hash) -- 32 bit integer

Same deal as XXH32: great for performance, not secure.

When to Use These​

Use CaseAlgorithm
Hash tablesXXH32 or MurMur
Bloom filtersXXH32 or MurMur
Data deduplication (trusted data)XXH32 or MurMur
Any security requirementSHA256, BLAKE3, or HMAC
Not for Security

These hashes are trivially forgeable. If someone might craft malicious input, use a cryptographic hash instead.