【技术实现步骤摘要】
一种基于局部敏感哈希算法的文件树匹配近似检索方法及系统
[0001]本专利技术涉及数据安全
,尤其涉及一种基于局部敏感哈希算法的文件树近似匹配检索方法及系统。
技术介绍
[0002]软件组成分析(SCA)是识别代码库中开源软件的自动化流程,其中文件及文件树匹配是SCA中重要的组成技术;传统的方法是将文件或者文件树映射为多种哈希签名,比如将文件内容通过sha1或者md5算法映射为160位或128位的0
‑
1向量值作为文件签名,对于文件树,则通过提取该文件数下子文件和子文件树的名称、大小、哈希值等作为特征,进行排序后拼接,再生成sha1或md5值作为文件树的签名。但是,该方法不能做近似查询,在实际软件开发过程中,存在不少对于开源组件的引用进行修改的现象,而用户希望可以检测到仅有少量文件改动的文件树,这时就需要进行近似查询;而且传统方法是基于自底向上进行哈希签名,某个文件的微小改动,就会造成其父路径上的所有结点产生完全不同的哈希签名。这种情况下,传统方法就只能匹配到其子文件或子文件树,而错过文件树的整体相似 ...
【技术保护点】
【技术特征摘要】
1.一种基于局部敏感哈希算法的文件树匹配近似检索方法,其特征在于:所述近似检索方法包括:S1、通过局部敏感哈希算法来计算文件树下的子文件树和子文件的sha1值,并生成文件树的哈希向量,通过计算两个文件树的哈希向量之间的距离判断文件树之间的相似性;S2、通过层次聚类算法对文件树的哈希值进行多次聚类,在搜索时,从最高层的聚类中心点出发,比较得到最近的点,然后搜索该点下面的最近的子节点,在最低层遍历所有节点,返回top
‑
k最相似的文件树节点。2.根据权利要求1所述的一种基于局部敏感哈希算法的文件树匹配近似检索方法,其特征在于:所述步骤S1具体包括以下内容:S11、依次遍历文件树下的节点,如果节点为文件,即子文件,则根据子文件内容通过java.security.MessageDigest类计算生成sha1值并循环读取子文件内容输入到类MessageDigest函数中,最后将长度不确定的子文件内容转换成固定长度的哈希值;S12、如果节点为文件树,即子文件树,则查看是否已经生成局部敏感哈希值,如果没有则返回到步骤S11递归遍历子文件树下的节点,如果节点为文件,则根据步骤S11生成sha1值,如果节点为文件树,则递归执行步骤S12;S13、对所有子节点进行文件大小求和sum=∑
i
size
i
,然后归一化子节点文件大小到0~1,形成权重w
i
=size
i
/sum,其中,size表示文件大小,i表示第i个文件;S14、对子节点的哈希值的每个位进行加权求和:得到得到表示第j个子节点向量的第k个元素;表示新向量第k个元素;S15、通过计算进行近似比较的两个文件树之间距离来衡量文件树之间的相似度,距离越小则表示两个文件树越相似,反之距离越大,文件树差异越大,即不相同文件越多,a和b表示两个近似比较的文件树,表示向量的第l个元素,表示向量的第l个元素。3.根据权利要求1所述的一种基于局部敏感哈希算法的文件树匹配近似检索方法,其特征在于:所述步骤S2具体包括以下内容:S21、设文件树集合为S,S中一个元素对应文件树的局部敏感哈希值;S22、对S中所有集合进行k
‑
means聚类算法,将S中所有集合分为k类别;S23、在步骤S22中k个类别的基础上,再次进行k
‑
means聚类算法,生成k/m个类别;S24、重复步骤S22和S23,直到类别数小于等于m;S25、从最高层类别开始搜索,寻找与被检索哈希值最近的类别中心点,然后递归搜索该中心点下的类别,直到最后一层类别,包含该类别下的文件树信息。4.根据权利要求3所述的一种基于局部敏感哈希算法的文件树匹配近似检索方法,其特征在于:所述k
‑
means聚类算法包括以下内容:A1、随机选取k个点为质心作为k个类别,分别计算其他样本与这k个类别点的距离,将样本类别与其最近质心类型相同;
A2、在每个类别下,计算其所有样本的向量的平均向量值,得到新的质心;A3、重复迭代步骤A1和A2至N轮,或者新旧质心距离小于设置的阈值时,则停止迭代。5.一种基于局部敏感哈希算法的文件...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。