Page 338 - 《软件学报》2021年第7期
P. 338
2256 Journal of Software 软件学报 Vol.32, No.7, July 2021
够发现更多的相似文件对.为了查看改进后相似哈希方法在不同海明距离下的表现,在不同海明距离阈值上进
行实验,实验结果见表 11.改进后的相似哈希算法在海明距离阈值为 8 时已经能够达到 97.51%的精确度,而在阈
值为 6 及以下的情况下甚至可以达到 99%以上,其整体的精确度都维持在比较高的水平.
Table 8 Efficiency on large-scale database
表 8 大规模库上检测效率
总文 有结果 总候选 平均候选 总实际 平均实际 总时间 平均时间
工程名 提交号 编程语言
件数 的文件数 文件数 文件数 匹配个数 匹配个数 (s) (文件/s)
C++,JS,
electron eaa1804 897 537 6 627 12.34 1 827 3.4 193.9 0.36
python
JS,C++,
node 2daf883 23 065 7 088 900 612 127.06 689 636 97.3 3 003.6 0.42
python
python,
numpy 63ef78b 661 162 7 731 47.72 4 456 27.51 63.85 0.39
C,JS
C++,C
bitcoin 8830cb5 1 100 545 134 845 247.42 106 025 194.54 245.61 0.45
python
C,ruby,
redis 8ea4bdd 533 392 70 795 180.6 58 929 150.33 211.81 0.54
C++
ruby,C,
ruby 287bfb6 8 294 342 15 049 44.00 8 115 23.73 116.68 0.34
C++
python,
container-diff aae5709 1 029 723 1 032 341 1 427.86 867 737 1 200.19 454.53 0.63
C,go
zoneminder 98f7fb6 PHP,C++,JS 1 365 558 54 041 96.85 38 432 68.87 196.74 0.35
Swift,
githawk 18fef6c 1 586 653 26 661 40.83 23 389 35.82 214.04 0.33
JS,C
C,SQL,
postgre b55413d 2 907 1 634 93 091 56.97 42 575 26.06 589.30 0.36
C++
共计 41 437 12 634 2 341 793 185.36 1 841 121 145.73 5 290.06 0.42
Table 9 Experimental results of MD 5 and enhanced simhash on large-scale database
表 9 MD 5 和改进后相似哈希方法在大规模库上的检测结果
相似文件对 交集占总匹配对的比例(%)
MD 5 818 120 99.50
相似哈希-改进后 1 929 097 42.20
Table 10 Experimental results of samples
表 10 抽样实验结果
相似文件对 与 MD 5 的交集文件对数 错误匹配数 精确度(%)
MD 5 11 184 0 100
相似哈希-无行筛选 107 736 742 11 177 27 598 022 0.075
相似哈希-改进前 8 923 644 11 177 49 469 45.3
相似哈希-改进后 20 571 11 179 512 97.5
Table 11 Experimental results of enhanced simhash under different Hamming distance thresholds
表 11 不同海明距离阈值下改进后方法的实验结果
海明距离(≤) 检测文件对 错误数 精确度(%)
0 12 300 55 99.55
1 12 964 89 99.31
2 13 728 107 99.22
3 14 608 107 99.27
4 15 605 107 99.31
5 16 652 129 99.23
6 17 701 147 99.17
7 19 136 327 98.29
8 20 571 512 97.51
在本次实验中,改进前的相似哈希精确度达到了 45.3%,比 RQ1 中检测出的结果要高很多,为了解释这一现
象,对两次实验的结果作了进一步分析.改进前的相似哈希方法主要产生误报的原因是大量的文件中出现了行
覆盖现象,例如“returnfalse;”在一个文件中多次出现,导致最终文件的指纹值直接等于这一行的哈希结果,其他