#hash #tlsh #clustering #security #no-alloc

无std fast-tlsh

生成/解析/比较TLSH局部敏感哈希的库

4个版本

0.1.3 2024年5月17日
0.1.2 2024年5月15日
0.1.1 2024年4月8日
0.1.0 2024年3月27日

#528 in 算法

Download history 6/week @ 2024-04-14 311/week @ 2024-05-12 34/week @ 2024-05-19 2/week @ 2024-06-09 22/week @ 2024-07-21 66/week @ 2024-07-28

每月下载量 88次

Apache-2.0 OR MIT

395KB
7.5K SLoC

包含(Windows可执行文件,1KB) data/examples/smallexe.exe

fast-tlsh:纯Rust实现的快速TLSH兼容模糊哈希库

TLSH代表Trendmicro Locality Sensitive Hash。TLSH可用于检测相似文件。

您可以使用此crate生成/解析/比较(TLSH兼容)LSHs。

由于SIMD友好的优化和其内存布局,比较两个LSHs比原始实现快得多。即使您关闭了真正的SIMD(以禁止任何不安全代码),它也采用伪SIMD操作和额外的表来加速比较。

此外,它还通过“双更新”表优化加速生成模糊哈希(约快50%)。

crate功能(主要)

  • allocstd(默认)
    此crate支持 no_std(通过禁用两者),并且 allocstd 建立在最小的 no_std 实现之上。这些功能使依赖于 allocstd 的实现成为可能。
  • easy-functions(默认)
    它提供了易于使用的高级函数。
  • simd(默认;快速但可能不安全
    此crate默认是不安全的(由于使用SIMD指令)。但即使您禁用它,您也可以从其他优化中受益。
  • detect-features(默认;略慢但方便
    此功能依赖于 std
    如果启用了 simd 功能,并且可以在SIMD和非SIMD实现之间切换的情况存在,则它将启用运行时检查以动态切换实现。
  • opt-default(默认;如果未启用默认功能则推荐使用)
    此crate实现了许多优化,并且可以单独调整。如果您关闭所有默认功能,则关闭所有此类优化。您可以为推荐的一组优化启用此功能,除了基于SIMD的优化(通常是不安全的)。
  • opt-embedded-default(如果使用此功能则关闭默认功能)
    默认情况下,此crate针对缓存丰富的环境进行了优化。对于缓存内存较小的嵌入式设备,您可以使用此功能关闭生成大型表格。这使得代码略微增大,但当前可以减少128.25KiB的静态内存占用。
  • strict-parser
    它启用了严格的解析器,该解析器强制执行额外的有效性。默认情况下禁用(因为它未在官方实现中实现),但启用它会使解析器更健壮。
  • unsafe稍微快但危险
    其他与SIMD无关的不安全特性默认被禁用: unsafe。请注意,启用此功能通常不会显著加快程序速度。
  • unstable
    此功能启用了Nightly Rust的一些特定功能除外便携式SIMD。请注意,此功能严重依赖于rustc的版本,不应被视为稳定(不要期望与SemVer兼容的语义)。
  • serde
    它启用了与Serde的集成以序列化和反序列化模糊散列。
  • tests-slow
    它们将启用“慢速”测试(包括模糊测试)。

有关所有功能(包括与微调相关的功能),请参阅文档。

依赖项

~0.6-1.2MB
~27K SLoC