1 个不稳定版本
0.1.0 | 2021年6月5日 |
---|
1322 在 算法 中排名
305 每月下载次数
60KB
775 行
TLSH-RS
这是趋势科技局部敏感哈希(TLSH)算法的Rust版本 [github],[网站],用于计算字节流的哈希值。这些生成的哈希值可以用于相似性检测、数据聚类或最近邻搜索。
概述
构建TLSH摘要的算法如下(更多详细信息,请参阅 [1])
- 步骤1:使用长度为5的滑动窗口处理输入流,并填充哈希桶。每个三元组通过哈希函数传递(在本实现中,哈希函数是皮尔逊哈希)。
- 步骤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 代码集成到其中的系统的许可证限制。