Crate tlsh2

Source
Expand description

TLSH

A Rust implementation of the TLSH algorithm. The code is kept close to the original C++ version, to limit bugs and help maintainability.

This crate is no_std and different configurations of bucket numbers and checksum length are handled as generics, making every configuration properly optimized.

// The default builder uses 128 buckets and a 1-byte checksum.
// Other builders are also available.
let mut builder = tlsh2::TlshDefaultBuilder::new();
builder.update(b"Sed ut perspiciatis unde omnis iste natus");
builder.update(b"error sit voluptatem accusantium");
let tlsh = builder.build()
    .ok_or_else(|| "could not generate TLSH from payload")?;

// Alternatively, a TLSH object can be generated directly from
// a byte slice.
let tlsh2 = tlsh2::TlshDefaultBuilder::build_from(
    b"odit aut fugit, sed quia consequuntur magni dolores"
).ok_or_else(|| "could not generate TLSH from second payload")?;

// Then, the TLSH object can be used to generated a hash or compute
// distances
assert_eq!(
    tlsh.hash(),
    b"T184A022B383C2A2A20ACB0830880CF0202CCAC080033A023800338\
      A30B0880AA8E0BE38".as_slice(),
);
// The `diff` feature is required for this computation.
#[cfg(feature = "diff")]
assert_eq!(tlsh.diff(&tlsh2, true), 209);

Structs§

Tlsh
TLSH object, from which a hash or a distance can be computed.
TlshBuilder
Builder object, processing streams of bytes to generate Tlsh objects.

Type Aliases§

Tlsh48_1
TLSh with 48 buckets and a 1 byte checksum.
Tlsh128_1
TLSH with 128 buckets and a 1 byte checksum.
Tlsh128_3
TLSH with 128 buckets and a 3 bytes checksum.
Tlsh256_1
TLSH with 256 buckets and a 1 byte checksum.
Tlsh256_3
TLSH with 256 buckets and a 3 bytes checksum.
TlshBuilder48_1
Builder with 48 buckets and a 1 byte checksum.
TlshBuilder128_1
Builder with 128 buckets and a 1 byte checksum.
TlshBuilder128_3
Builder with 128 buckets and a 3 bytes checksum.
TlshBuilder256_1
Builder with 256 buckets and a 1 byte checksum.
TlshBuilder256_3
Builder with 256 buckets and a 3 bytes checksum.
TlshDefault
Default TLSH, using 128 buckets and a 1 byte checksum.
TlshDefaultBuilder
Default builder, using 128 buckets and a 1 byte checksum.