6个版本 (破坏性)

使用旧的Rust 2015

0.6.0 2023年11月14日
0.5.0 2023年11月13日
0.4.0 2023年11月12日
0.3.0 2023年11月11日
0.1.0 2016年11月1日

555算法

Download history 5/week @ 2024-04-15 50/week @ 2024-04-22 3/week @ 2024-04-29 19/week @ 2024-05-06 16/week @ 2024-05-13 21/week @ 2024-05-20 20/week @ 2024-05-27 18/week @ 2024-06-03 31/week @ 2024-06-10 60/week @ 2024-06-17 22/week @ 2024-06-24 8/week @ 2024-07-01 28/week @ 2024-07-08 15/week @ 2024-07-15 56/week @ 2024-07-22

每月107次下载

GPL-3.0+

1MB
18K SLoC

Shell 8K SLoC // 0.2% comments M4 7.5K SLoC // 0.2% comments C++ 1.5K SLoC // 0.2% comments C 1K SLoC // 0.2% comments Rust 159 SLoC // 0.3% comments Automake 44 SLoC // 0.1% comments

Rust包装器用于ssdeep

docs.rs crates.io

Rust包装器用于Jesse Kornblum的ssdeep,这是一个用于计算上下文触发分块哈希(CTPH)的C库。也称为模糊哈希,CTPH可以匹配具有同源性的输入。这种输入具有相同顺序的相同字节的序列,尽管这些序列之间的字节在内容和长度上可能不同。与标准哈希算法不同,CTPH可以用于识别高度相似但不是完全相同的文件。有关更多详细信息,请参阅这篇博客文章

安装

将以下行添加到您的 Cargo.toml 文件中

[dependencies]
ssdeep = "0.6.0"

然后,当您运行 cargo build 时,它将自动从 crates.io 获取包装器的源代码,编译底层C库,并构建包装器。C库被静态链接到包装器中。

已知构建过程在Linux和GCC下工作。如果您有不同的操作系统或编译器且构建失败,您可以 提交拉取请求打开问题

用法

要计算给定字节的模糊哈希,请使用 hash() 函数

extern crate ssdeep;

let h = ssdeep::hash(b"Hello there!").unwrap();
assert_eq!(h, "3:aNRn:aNRn");

要获取文件的内容的模糊哈希,请使用 hash_from_file()

let h = ssdeep::hash_from_file("path/to/file").unwrap();

要比较两个模糊哈希,请使用 compare(),它返回介于0(不匹配)和100之间的整数

let h1 = "3:AXGBicFlgVNhBGcL6wCrFQEv:AXGHsNhxLsr2C";
let h2 = "3:AXGBicFlIHBGcL6wCrFQEv:AXGH6xLsr2Cx";
let score = ssdeep::compare(h1, h2).unwrap();
assert_eq!(score, 22);

这些函数中的每个都返回一个 Result,其中当底层C函数失败时返回错误。

文档

自动生成的API文档可在以下位置找到

许可证

包装器代码根据GPLv3条款许可。

此包装器包含未更改的源代码分发 ssdeep(提交 d8705da60),该代码在构建过程中被编译并静态链接到包装器中。它遵循GPLv2许可证。

依赖项