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 在 算法
每月107次下载
1MB
18K SLoC
Rust包装器用于ssdeep
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许可证。