1 个不稳定版本
0.1.1 | 2023年2月24日 |
---|
#2013 在 算法
2,018 每月下载量
在 5 个crate(4 个直接使用)中使用
60KB
797 行
TLSH-RS
这是趋势科技局部敏感哈希(TLSH)算法的Rust移植 [github],[网站],用于计算字节流的哈希值。这些生成的哈希值可用于相似性检测、数据聚类或最近邻搜索。
概述
构建TLSH摘要的算法如下(更多细节,请参阅 [1])
- 步骤 1:使用长度为5的滑动窗口处理输入流,并填充哈希桶。每个三元组通过哈希函数(在本实现中,哈希函数是Pearson哈希)。
- 步骤 2:从步骤1中获得的哈希桶中计算四分位数点。这一步可能需要对桶数组进行排序:
q1
:数组的最低25%q2
:数组的最低50%q3
:数组的最低75% - 步骤 3:计算摘要头。哈希的前三个字节保留为头。TLSH哈希的头由三部分组成
- 第一个字节是字节字符串的校验和(带有一些模运算)
- 第二个字节是从字节字符串长度对数的模运算中计算出来的
- 第三个字节是
q1_ratio <<< 4 | q2_ratio
的结果,其中q1_ratio = (q1 * 100 / q3) MOD 16
q2_ratio = (q2 * 100 / q3) MOD 16
- 步骤 4:从桶数组构建摘要体。注意:在此步骤中,假设读取桶的顺序是倒序的。这意味着,首先读取最后一个元素,而最后一个元素最后读取。它们的值被转换为十六进制形式并附加到最终的哈希值中。
示例
示例 examples/tlsh_files.rs
展示了如何从文件中计算哈希值并测量它们的差异(距离)。要运行示例,请在命令行中使用以下命令
cargo run --release --example tlsh_files ../path/to/folder/with/files
参考
J. Oliver, C. Cheng 和 Y. Chen (2013)。 "TLSH - 一种局部敏感哈希" [pdf]。
许可证
TLSH 以 Apache 或 BSD 许可证提供。用户可以选择使用任一许可证,具体取决于他们计划与 TLSH 代码集成的系统的许可证限制。