5个版本 (3个重大更新)

0.4.0 2024年7月1日
0.3.0 2023年7月30日
0.2.1 2023年5月4日
0.2.0 2023年1月1日
0.1.0 2022年12月30日

#281 in 算法

Download history 298/week @ 2024-04-07 214/week @ 2024-04-14 194/week @ 2024-04-21 296/week @ 2024-04-28 274/week @ 2024-05-05 84/week @ 2024-05-12 198/week @ 2024-05-19 236/week @ 2024-05-26 333/week @ 2024-06-02 297/week @ 2024-06-09 252/week @ 2024-06-16 241/week @ 2024-06-23 548/week @ 2024-06-30 361/week @ 2024-07-07 239/week @ 2024-07-14 285/week @ 2024-07-21

每月1,449次下载
用于 boreal

Apache-2.0 OR BSD-3-Clause

505KB
568

TLSH2

Build status Crates.io Documentation

Rust对TLSH库的移植。代码尽可能接近原始的C++版本,以限制错误并帮助维护

此crate是no_std,并将桶数量和校验和长度的不同配置作为泛型处理,使每个配置都得到适当的优化。

// 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.
assert_eq!(tlsh.diff(&tlsh2, true), 209);

以下配置可用

  • 128个桶和1字节校验和(默认)。
  • 128个桶和3字节校验和。
  • 256个桶和1字节校验和。
  • 256个桶和3字节校验和。
  • 48个桶和1字节校验和。

开启fast特性可以加快TLSH生成速度,但会添加一个64KB的查找表。

原始TLSH版本中存在的threadedprivate选项尚未实现。

无运行时依赖