#fingerprint #hash #api-bindings

umash

Idiomatic API for the umash hash/fingerprint function

7 releases (4 breaking)

0.6.1 Jan 19, 2025
0.6.0 Oct 5, 2024
0.5.0 Oct 5, 2024
0.4.1 Oct 10, 2021
0.1.2 May 10, 2021

#1469 in Algorithms

Download history 133/week @ 2025-05-23 118/week @ 2025-05-30 154/week @ 2025-06-06 113/week @ 2025-06-13 136/week @ 2025-06-20 66/week @ 2025-06-27 61/week @ 2025-07-04 98/week @ 2025-07-11 109/week @ 2025-07-18 103/week @ 2025-07-25 249/week @ 2025-08-01 89/week @ 2025-08-08 61/week @ 2025-08-15 150/week @ 2025-08-22 39/week @ 2025-08-29 153/week @ 2025-09-05

411 downloads per month
Used in 2 crates

MIT license

26KB
327 lines

UMASH is an almost-universal family of hash functions. Each Params struct defines a specific hash function; when the parameters are generated pseudorandomly, the probability that two different inputs of up to s bytes collide (for an independently generated set of parameters) is at most ceil(s / 4096) 2^-55 for the 64-bit hash. The 128-bit fingerprint reduces that probability to less than 2^-70 for inputs of 1 GB or less.

See the reference repo for more details and proofs.


umash-rs: a rust API for UMASH

Build Status crates.io

UMASH is a family of fast hash / fingerprinting functions with collision bounds. This crate builds on x86-64 (with CLMUL) and little-endian aarch64 (with VMULL). The UMASH family of functions is defined independently of hardware specific features, so computes the same values on both architecture.

See https://github.com/backtrace-labs/umash for more details.

Dependencies

~165–460KB