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 算法
每月下载量 88次
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功能(主要)
alloc
和std
(默认)
此crate支持no_std
(通过禁用两者),并且alloc
和std
建立在最小的no_std
实现之上。这些功能使依赖于alloc
和std
的实现成为可能。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