CN110865982A - 一种数据匹配方法、装置、电子设备及存储介质 - Google Patents

一种数据匹配方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN110865982A
CN110865982A CN201911137453.8A CN201911137453A CN110865982A CN 110865982 A CN110865982 A CN 110865982A CN 201911137453 A CN201911137453 A CN 201911137453A CN 110865982 A CN110865982 A CN 110865982A
Authority
CN
China
Prior art keywords
data
detected
preset
value
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911137453.8A
Other languages
English (en)
Inventor
顾立明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201911137453.8A priority Critical patent/CN110865982A/zh
Publication of CN110865982A publication Critical patent/CN110865982A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种数据匹配方法,所述数据匹配方法包括对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;若是,则将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;若否,则判定所述待检测数据不为所述预设数据。本申请还公开了一种数据匹配装置、一种电子设备及一种存储介质,具有以上有益效果。

Description

一种数据匹配方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种数据匹配方法、装置、一种电子设备及一种存储介质。
背景技术
随着科技的发展,计算机和网络改变了人们工作方式和生活方式,大量信息都是以数字化的形式存在。对数据信息进行高效的处理,已经成为数据处理业务的重中之重。
数据匹配可以应用于病毒文件检测或恶意流量监测过程中,相关技术中的数据匹配操作往往通过对待检测数据与标准数据库中的每一数据进行全文匹配来实现。但是,上述基于全文的数据匹配操作需要消耗大量的时间和计算资源,数据匹配的效率较低。
因此,如何提高数据匹配效率是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种数据匹配方法、装置、一种电子设备及一种存储介质,能够提高数据匹配效率。
为解决上述技术问题,本申请提供一种数据匹配方法,该数据匹配方法包括:
对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;
判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;
若是,则将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;
若否,则判定所述待检测数据不为所述预设数据。
可选的,所述对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值,包括:
利用哈希函数组中的每一预设哈希函数分别对所述待检测数据在所述目标范围内的数据内容进行映射,得到所述待检测数据在每一所述预设哈希函数下对应的部分内容映射值;
相应的,所述预设数据在所述目标范围内的数据内容的部分内容映射值通过以下方式获得:
利用所述哈希函数组中的每一所述预设哈希函数分别对所述预设数据在所述目标范围内的数据内容进行映射,得到所述预设数据在每一所述预设哈希函数下对应的部分内容映射值。
可选的,判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值,包括:
根据所述待检测数据的部分内容映射值确定待检测目标位;
判断所述目标布隆过滤器中待检测目标位的值是否为所述第一预设值。
可选的,所述布隆向量通过以下方式获得:
将所述预设数据映射为预设长度的数值序列;
根据所述预设数据的部分内容映射值确定所述目标布隆过滤器中的基准目标位;
将所述数值序列中与所述基准目标位对应的值设置为所述第一预设值,将所述数值序列中除所述基准目标位的其余位置的值设置为第二预设值。
可选的,所述待检测数据在目标范围内的数据内容通过以下方式获得:
将所述待检测数据的全部内容划分为N个数据块,并将每一所述数据块的前M位作为备选数据内容;其中,所述N为小于或等于所述目标布隆过滤器的布隆向量长度的正整数,所述M为小于或等于所述数据块的长度的正整数;
将各数据块的备选内容作为所述待检测数据的目标范围内的数据内容。
可选的,将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据,包括:
将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作;
当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值完全相同时,则判定所述待检测数据为所述预设数据;
当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值不完全相同时,则判定所述待检测数据不为所述预设数据。
可选的,还包括:
若所述目标布隆过滤器的布隆向量中与所述部分内容映射值对应的目标位的值不为所述第一预设值,或所述待检测数据的全文映射值与所有所述预设数据的全文映射值不完全相同时,读取所述待检测数据的下一数据作为新的待检测数据,并对所述新的待检测数据执行数据匹配操作。
本申请还提供了一种数据匹配装置,该数据匹配装置包括:
部分映射模块,用于对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;
判断模块,用于判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;
全文匹配模块,用于当所述目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值均为第一预设值时,将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;
结果判定模块,用于当所述目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值不均为第一预设值时,判定所述待检测数据不为所述预设数据。
本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述数据匹配方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述数据匹配方法执行的步骤。
本发明提供了一种数据匹配方法,包括对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;若是,则将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;若否,则判定所述待检测数据不为所述预设数据。
本申请首先计算待检测数据的部分内容映射值,目标布隆过滤器根据预设数据的部分内容映射值得到,因此基于目标布隆过滤器判断待检测数据的部分内容映射值,能够判断待检测数据的部分内容与预设数据的部分内容是否完全一致。在判定待检测数据的部分内容哈希值与预设数据的部分内容哈希值不相同的基础上,可以直接确定待检测数据的文件类型与预设数据的文件类型不相同,无需进行全文哈希值的比对,减少了文件比对的时间,提高了文件类型的检测效率。本申请能够提高数据匹配效率。本申请同时还提供了一种数据匹配装置、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种数据匹配方法的流程图;
图2为本申请实施例所提供的一种文件匹配原理示意图;
图3为本申请实施例所提供的一种哈希列表生成方法的流程图;
图4为本申请实施例所提供的一种基于哈希列表检测病毒文件的方法的流程图;
图5为本申请实施例所提供的一种数据匹配装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种数据匹配方法的流程图。
具体步骤可以包括:
S101:对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;
其中,本实施例的目的在于对待检测数据进程数据匹配,进而根据匹配结果判断待检测数据是否为已知的预设数据。数据匹配的操作可以应用于病毒检测、证件号码核对或论文查重的过程中,若待检测数据与病毒数据库中的某一项数据相同,则说明该待检测数据为病毒数据。本实施例的执行主体可以为交换机、防火墙、等保一体机或服务器等电子设备,本实施例对此不进行限定。相应的,预设数据可以为已知病毒样本以便判断待检测数据是否为已知病毒,预设数据还可以为已经录入系统的证件号码以便判断待检测数据中记录的证件号码是否已经录入,预设数据还可以为已上传的论文文本以便判断待检测数据中的内容是否与已上传内容一致。
在本步骤之前可以存在接收待检测数据的操作,本实施例不限定接收的待检测数据的数量和种类,待检测数据可以为文件、内存和网络流量中的任一项或任几项的组合。在接收到待检测数据之后,可以先读取待检测数据在目标范围的文件内容,即读取待检测数据的部分内容。可以理解的是,待检测数据在目标范围的数据内容的数据量小于待检测数据全文内容的数据量。获取待检测数据的部分文件内容的意义在于判断待检测数据与预设数据之间的部分内容是否一致,因此作为一种可行的实施方式,可以将待检测数据划分为多个文件区间,即多个数据块,在每一文件区间内选择特定字段的内容作为待检测数据在目标范围的文件内容。在确定待检测数据的部分内容之后,还可以对待检测数据在目标范围的文件内容进行映射,得到待检测数据的部分内容映射值。
具体的,本实施例可以基于映射函数将待检测数据在目标范围的文件内容进行映射得到部分内容映射值,上述映射函数可以为哈希函数,相应得到的部分内容映射值可以为部分内容哈希值。作为一种可行的实施方式,本实施例中生成待检测数据的部分内容哈希值的过程可以包括:将待检测数据的全部内容划分为N个数据块,并将每一数据块的前M位作为备选文本内容,分别对待检测数据的备选文本内容进行哈希映射得到预设数据的部分内容哈希值。
S102:判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;若是,则进入S103;若否,则进入S104;
其中,本实施例中通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到目标布隆过滤器的布隆向量。作为一种可行的实施方式,目标布隆过滤器的布隆向量可以为二进制向量,布隆向量中的各个位的值可以为1或0。
预设数据指已知数据全部内容的数据,在本步骤之前可以存在获取预设数据的部分映射值的操作,即预设数据的部分内容映射值通过对预设数据在目标范围的数据内容进行映射得到。具体的,可以先读取预设数据在目标范围的部分内容,然后对预设数据的部分内容进行映射。需要说明的是,上述预设数据的部分内容在预设数据中的位置与待检测数据的部分内容在待检测数据中的位置相同。例如,待检测数据的部分内容映射值为对待检测数据中每个128K数据块的头部4K内容进行哈希映射得到,预设数据的部分内容哈希值为对预设数据中每个128K数据块的头部4K内容进行哈希映射得到。可以理解的是,若两段数据内容的映射值相同,则说明两段数据内容相同,即:若预设数据与待检测数据在相同位置的数据内容的哈希值相同则说明预设数据与待检测数据在相同位置数据内容相同,预设数据与待检测数据存在文件全文一致的可能;相反,若预设数据与待检测数据在相同位置数据内容的哈希值不相同则说明预设数据与待检测数据在相同位置数据内容不相同,预设数据与待检测数据不存在数据全文一致的可能。
具体的,本实施例基于目标布隆过滤器实现预设数据的部分内容映射值与待检测数据部分内容映射值的比对。在S102之前可以先计算预设数据的部分内容映射值,并根据部分内容映射值设置目标布隆过滤器的布隆向量,以便利用目标布隆过滤器判断待检测文件的部分内容映射值与预设数据的部分内容映射值是否相同。具体的,可以先对预设数据在目标范围的数据内容进行映射得到预设数据部分内容映射值,进而确定预设数据的部分内容映射值在目标布隆过滤器的布隆向量中对应的第一目标位,并将第一目标位的值设置为第一预设值,得到目标布隆过滤器。布隆向量中除第一目标位之外的其他目标位可以均设置为第二预设值,第一预设值为与第二预设值不同的数值。需要说明的是,本实施例中用于计算待检测数据的部分内容映射值的映射函数,与用于计算预设数据的部分内容映射值的映射函数相同,因此两个部分内容的映射值相同时可以说明两个部分内容完全一致。
作为一种可行的实施方式,可以对预设数据在目标范围的文件内容进行基于哈希函数组的映射得到多个整数形式的哈希值。即:预设数据的部分内容哈希值包括预设数据在目标范围的文件内容分别通过每一种预设哈希函数映射得到的值。需要说明的是,哈希函数组中可以包括多个预设哈希函数,每一预设哈希函数对于预设数据在目标范围的文件内容进行映射时都可以得到唯一对应的整数形式的哈希值。目标布隆过滤器中的布隆向量的每一位的默认值均为0,布隆向量的位数大于或等于上述对文件内容进行哈希映射得到的哈希值。确定预设数据的部分内容哈希值在布隆向量中对应的第一目标位可以为:将整数形式的哈希值作为第一目标位所在的位置,可以将第一目标位的值设置由默认值0调整为1。具体的,在计算待检测文件的部分内容哈希值时可以选择上文提到的哈希函数组中的每一预设哈希函数进行计算,得到多个整数形式的哈希值。即:待检测文件的部分内容哈希值包括待检测文件在目标范围的文件内容分别通过每一种预设哈希函数映射得到的值。
进一步的,根据预设数据的部分内容映射值构建目标布隆过滤器的布隆向量的过程可以包括:根据所述预设数据的部分内容映射值确定基准目标位;其中,所述基准目标位的位数等于所述预设数据的部分内容映射值;将所述目标布隆过滤器中的基准目标位设置为所述第一预设值。
S103:将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;
其中,本步骤建立在已经确定待检测数据的部分内容映射值与预设数据的部分内容映射值相同的前提下,也就是说待检测数据与预设数据相同位置的部分内容相同,待检测数据与预设数据存在所有数据内容完全一致的可能。在本步骤之前可以存在读取预设数据的全部内容,并根据预设数据的全部内容得到预设数据的全文映射值的操作。
具体的,本步骤中将待检测数据的全文映射值与预设数据的全文映射值进行匹配操作的可以为将待检测数据的全文映射值与预设数据的全文映射值进行逐位匹配,匹配结果可以包括匹配成功和匹配失败。当匹配结果为匹配成功时,说明两份文件的全文映射值完全相同,待检测数据为预设数据;当匹配结果为匹配失败时,说明两份数据的全文映射值不完全相同,待检测数据不为预设数据。
S104:判定所述待检测数据不为所述预设数据。
其中,本步骤建立在已经确定待检测数据的部分内容映射值与预设数据的部分内容映射值不相同的前提下,说明待检测数据与预设数据的相同位置的部分内容不相同,因此待检测数据的数据全文与预设数据的数据全文不完全相同,此时无需进行待检测数据与预设数据的全文比对,即可判定待检测数据不为所述预设数据。
作为一种可行的实施方式,本实施例可以对多个待检测数据进行数据匹配操作,若所述目标布隆过滤器的布隆向量中与所述部分内容映射值对应的目标位的值不为所述第一预设值,或所述待检测数据的全文映射值与所有所述预设数据的全文映射值不完全相同时,本实施例可以读取所述待检测数据的下一数据作为新的待检测数据,并对新的待检测数据执行数据匹配操作。具体的,对新的待检测数据执行数据匹配操作可以包括以下步骤:对新的待检测数据在目标范围内的数据内容进行映射,得到所述新的待检测数据的部分内容映射值;判断目标布隆过滤器的布隆向量中与所述新的待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;若是,则将所述新的待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述新的待检测数据是否为所述预设数据;若否,则判定所述新的待检测数据不为所述预设数据。
本实施例首先计算待检测数据的部分内容映射值,目标布隆过滤器根据预设数据的部分内容映射值得到,因此基于目标布隆过滤器判断待检测数据的部分内容映射值,能够判断待检测数据的部分内容与预设数据的部分内容是否完全一致。在判定待检测数据的部分内容哈希值与预设数据的部分内容哈希值不相同的基础上,可以直接确定待检测数据的文件类型与预设数据的文件类型不相同,无需进行全文哈希值的比对,减少了文件比对的时间,提高了文件类型的检测效率。
作为对于图1对应实施例的进一步补充,S101中得到所述待检测数据的部分内容映射值的过程可以包括:将所述待检测数据的全部内容划分为N个数据块,并将每一所述数据块的前M位作为备选数据内容;其中,所述N为小于或等于所述目标布隆过滤器的布隆向量长度的正整数,所述M为小于或等于所述数据块的长度的正整数;将各数据块的备选内容作为所述待检测数据的目标范围内的数据内容进行映射得到待检测数据的部分内容映射值。
进一步的,还可以利用哈希函数组中的每一预设哈希函数分别对所述待检测数据在目标范围的数据内容进行映射,得到所述待检测数据在每一所述预设哈希函数下对应的部分内容映射值。本实施例中待检测数据和预设数据的映射方式需要保持一致,因此得到所述预设数据的部分内容映射值的操作可以具体为:利用所述哈希函数组中的每一所述预设哈希函数分别对所述预设数据在所述目标范围的数据内容进行映射,得到所述预设数据在每一所述预设哈希函数下对应的部分内容映射值。在将待检测数据的全部内容划分为N个数据块,并将每一所述数据块的前M位作为备选数据内容的基础上,可以利用哈希函数组中的每一预设哈希函数分别对备选数据内容进行映射,得到各个备选数据内容在每一所述预设哈希函数下对应的部分内容映射值。
作为对于图1对应实施例的进一步补充,S102中判断所述待检测数据的部分内容映射值在目标布隆过滤器中对应的目标位的值是否均为第一预设值的过程可以包括:根据所述待检测数据的部分内容映射值确定待检测目标位;判断所述目标布隆过滤器中待检测目标位的值是否为所述第一预设值。若待检测目标位均为第一预设值,则说明待检测数据的部分内容映射值在目标布隆过滤器中对应的目标位的值均为第一预设值;若待检测目标位不均为第一预设值,则说明待检测数据的部分内容映射值在目标布隆过滤器中对应的目标位的值不均为第一预设值。
进一步的,目标布隆过滤器的布隆向量通过以下方式获得:将所述预设数据映射为预设长度的数值序列;根据所述预设数据的部分内容映射值确定所述目标布隆过滤器中的基准目标位;将所述数值序列中与所述基准目标位对应的值设置为所述第一预设值,将所述数值序列中除所述基准目标位的其余位置的值设置为第二预设值。
举例说明上述过程,哈希函数组中包括哈希函数x、哈希函数y和哈希函数z,分别利用哈希函数x、哈希函数y和哈希函数z对预设数据同一部分内容进行哈希计算得到的哈希值分别为2、6和8。目标布隆过滤器的布隆向量为00000000000,此时分别将第2位、第6位和第8位设置为1,此时目标布隆过滤器的布隆向量为00100010100。其中,上述例子中布隆向量从0开始计算位数。需要说明的是,当预设数据的数量为多个时,可以对同一目标布隆过滤器进行设置,例子进行说明:若分别利用哈希函数x、哈希函数y和哈希函数z对另一预设数据同一部分内容进行哈希计算得到的哈希值分别为2、7和8,可以将两份预设数据对应的布隆向量进行叠加,最终得到的目标布隆过滤器的布隆向量为00100011100。需要说明的是,对于预设数据的部分内容哈希值和待检测文件的部分内容哈希值,其计算过程中应用的哈希函数应保持一致。下面继续以上文提到的哈希函数组中包括哈希函数x、哈希函数y和哈希函数z的例子进行说明,目标布隆过滤器的布隆向量为00100011100,若待检测文件的部分内容哈希值包括2、6、7和8中的任几个整数的组合时,说明待检测文件的部分内容哈希值与预设数据的部分内容哈希值可能相同,若待检测文件的部分内容哈希值包括2、6、7和8之外的其他值时说明待检测文件的部分内容哈希值与预设数据的部分内容哈希值不相同。
作为对于图1对应实施例的进一步补充,S103中进行全文匹配的操作可以包括:将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作;当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值完全相同时,则判定所述待检测数据为所述预设数据;当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值不完全相同时,则判定所述待检测数据不为所述预设数据。
作为对于图1对应实施例的进一步补充,当所述待检测数据的部分内容映射值与所有所述预设数据的部分内容映射均不相同,或所述待检测数据的全文映射值与所有所述预设数据的全文映射值均不匹配时,可以读取所述待检测数据的下一数据作为新待检测数据,并对所述新待检测数据执行所述预设数据的部分内容映射值和全文映射值的数据类型检测操作。
作为对于图1对应实施例的进一步补充,上述预设数据可以为预设名单中的文件,预设名单包括病毒文件黑名单和/或病毒文件白名单。在S103根据匹配结果判定待检测数据的文件类型是否与预设文件的文件类型相同的过程中,若匹配成功且预设数据为病毒文件黑名单中的文件时,判定待检测数据为病毒文件;若匹配成功,且预设数据为病毒文件白名单中的文件时,判定待检测数据为非病毒文件。
下面通过在实际应用中的实施例说明上述实施例描述的流程。请参见图2,图2为本申请实施例所提供的一种文件匹配原理示意图,在产品开发阶段可以利用哈希列表生成模块将黑白名单文件集中的文件进行哈希映射得到每一文件的对应的全文哈希值和部分内容哈希值,将全文哈希值添加至哈希列表中,根据部分内容哈希值构建布隆过滤器中的二进制布隆向量。在产品运行阶段可以利用哈希列表匹配模块先后利用二进制布隆向量和哈希列表对待匹配文件集中的待匹配文件进行匹配操作。
请参见图3,图3为本申请实施例所提供的一种哈希列表生成方法的流程图,具体可以包括以下步骤:
S201:确定黑白名单文件集;
S202:清空哈希列表;
S203:清空二进制布隆向量;
S204:读取黑白名单文件集中目标文件的全文;
S205:计算黑白名单文件集中目标文件的全文哈希值;
S206:将S205中计算的全文哈希值加入哈希列表;
S207:读取黑白名单文件集中的目标文件的部分内容;
S208:将部分内容映射到二进制布隆向量;
S209:判断黑白名单文件集中是否还有待处理文件;若是,则进入S204;若否,则结束流程。
请参见图4,图4为本申请实施例所提供的一种基于哈希列表检测病毒文件的方法的流程图,具体可以包括以下步骤:
S301:确定待匹配文件;
S302:读取待匹配文件的部分内容;
S303:计算部分内容在多个哈希函数下的映射结果;
S304:判断部分内容在二进制向量表中对应的所有位是否都为真;若是,则进入S305;若否,则进入S308;
S305:读取待匹配文件的全文内容;
S306:计算待匹配文件全文内容的全文哈希值;
S307:在哈希列表中查找全文哈希值是否存在;
S308:判断是否还有待匹配文件;若是,则进入S302;若否,则结束流程。
本实施例可以应用于杀毒软件,该杀毒软件可以包括哈希列表生成模块和哈希列表匹配模块,哈希列表生成模块用于生成文件内容的哈希值,哈希列表匹配模块用于将待匹配文件的内容哈希值与哈希列表中的哈希值进行匹配。例如检查一个或多个文件是否在黑名单或白名单中,而该黑名单或白名单一般是由许多个哈希值(MD5、SHA1等)组成。每个文件的内容经过计算可以得到一个唯一的哈希值,两个不同的文件经过计算肯定得到两个不同的哈希值。因此当需要检查某个文件是否在黑名单或白名单上,可以这样操作:先通过计算文件的内容得到一个哈希值,然后检查这个哈希值是否与黑或白名单上的某个哈希值相同,如果存在相同哈希值就表示该文件存在于黑或白名单上,否则就不存在黑或白名单上。
具体的,本实施例预先设置黑白名单文件集,黑白名单文件集中可以包括黑名单文件集和/或白名单文件集,黑名单文件集中包括多个病毒文件,白名单文件集中包括多个白文件(即非病毒文件)。本实施例还可以设置有哈希列表,用于存储黑白名单文件集中文件的全文哈希值,当然该哈希列表中还可以存储全文哈希值与黑白名单文件集中文件的对应关系。在构建哈希列表和布隆过滤器的过程中,可以依次读取黑白名单文件集中的文件全文,计算文件全文对应的全文哈希值,并将得到的全文哈希值添加至哈希列表中。需要说明的是,在对黑白名单文件集中的文件进行全文哈希值计算之前可以存在清空哈希列表的操作,以使哈希列表中的哈希值均为黑白名单文件集中文件的全文哈希值。本实施例还可以读取文件的部分内容,将部分内容映射到布隆过滤器的二进制布隆向量。二进制布隆向量为一个长度为P的二进制序列,每一位由1或0构成,1表示真,0表示假。清空二进制布隆向量是表示将所有的二进制位都变成假的状态。上述读取文件的部分内容指:读取文件的固定位置的一小部分内容,例如每个128K数据块的头部4K内容。本实施例将部分内容映射到二进制布隆向量的过程可以为:利用n个哈希函数来进行映射操作,这些哈希函数用不同算法将之前文件中读取的部分内容映射为一个整数,这个整数的范围是大于等于0小于P(P为二进制布隆向量的长度)。在映射后可以得到n个整数,然后将这些整数所对应的布隆向量中的某一位设置为真。例如,得到整数1、8、18,就将布隆向量中的第一位、第八位和第十八位设置为真。
在设置完哈希列表和布隆过滤器之后,可以执行对于待匹配文件(即上文的待检测文件)的哈希匹配操作。首先可以读取待匹配文件的部分内容,本实施例中读取待匹配文件的部分内容指:读取待匹配文件的固定位置的一小部分内容,例如每个128K数据块的头部4K内容,这里的固定位置和读取大小必须与设置布隆过滤器过程中读取黑白名单文件集中的文件的固定位置和读取大小保持一致。在得到待匹配文件的部分内容之后,可以使用设置布隆过滤器过程中相同的n个哈希函数来进行映射操作,每个函数将读取的部分内容映射为一个整数,这个整数的范围是大于等于0小于P(P为二进制布隆向量的长度)。进一步的,将对待匹配文件的部分内容进行映射得到的n个整数作为位置,去判断二进制布隆向量对应位置的真假。如果所有这些位置为真,表示待匹配文件可能存在于黑白名单中,需要执行全文哈希匹配的步骤验证;否则表示待匹配文件一定不存在于黑白名单中,可以跳过全文哈希匹配的所有步骤。若待匹配文件为白名单文件集中的文件,则说明待匹配文件的文件类型为白文件;若待匹配文件为黑名单文件集中的文件,则说明待匹配文件的文件类型为病毒文件。作为一种可行的实施方式,当黑白名单文件集中仅包括黑名单文件或白名单文件时,若待匹配文件不为白名单文件集中的文件,则可以判定待匹配文件为病毒文件;若待匹配文件不为黑名单文件集中的文件,则可以判定待匹配文件为白文件。当黑白名单文件集中仅包括黑名单文件和白名单文件时,若待匹配文件不为白名单文件集中的文件,也不为黑名单文件集中的文件,则可以判定待匹配文件为未知类型文件。
可以理解的是,当本实施例中的二进制布隆向量表足够大且选用合适的哈希映射函数,可以避免哈希冲突。通过本实施例的文件类型检测方法,可以跳过需要读取全文内容且针对全文内容的哈希计算。在一些常用场景中(例如杀毒软件),绝大部分文件不存在于黑白名单中。在此情景下,大部分文件只需要读取很小部分内容且只需针对这部分内容计算哈希值,可以提高匹配速度。
在匹配文件和黑白名单的时候,本实施例利用布隆过滤器进行初步判断可以减少文件读取和计算量,降低病毒文件检测过程中的资源消耗并提升了病毒文件检测效率。本实施例可以避免对所有的文件进行全文读取和全文计算哈希值,只需要对确实存在于黑白名单中和极少数不存在于黑白单中的文件进行全文读取和计算哈希值。这在有些使用场景中(例如,杀毒软件)当绝大多数的文件不在黑白名单中的情况下,可以极大地节省全文读取和全文计算哈希所造成的CPU资源、IO资源开销,并提升整个匹配速度。
请参见图5,图5为本申请实施例所提供的一种数据匹配装置的结构示意图;
该装置可以包括:
部分映射模块100,用于对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;
判断模块200,用于判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;
全文匹配模块300,用于当所述目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值均为第一预设值时,将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;
结果判定模块400,用于当所述目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值不均为第一预设值时,判定所述待检测数据不为所述预设数据。
本实施例首先计算待检测数据的部分内容映射值,目标布隆过滤器根据预设数据的部分内容映射值得到,因此基于目标布隆过滤器判断待检测数据的部分内容映射值,能够判断待检测数据的部分内容与预设数据的部分内容是否完全一致。在判定待检测数据的部分内容哈希值与预设数据的部分内容哈希值不相同的基础上,可以直接确定待检测数据的文件类型与预设数据的文件类型不相同,无需进行全文哈希值的比对,减少了文件比对的时间,提高了文件类型的检测效率。
进一步的,部分映射模块100具体用于利用哈希函数组中的每一预设哈希函数分别对所述待检测数据在所述目标范围内的数据内容进行映射,得到所述待检测数据在每一所述预设哈希函数下对应的部分内容映射值;
相应的,还包括:
预设数据映射模块,用于利用所述哈希函数组中的每一所述预设哈希函数分别对所述预设数据在所述目标范围内的数据内容进行映射,得到所述预设数据在每一所述预设哈希函数下对应的部分内容映射值。
进一步的,判断模块200,包括:
待检测目标位确定单元,用于根据所述待检测数据的部分内容映射值确定待检测目标位;
待检测目标位判断单元,用于判断所述目标布隆过滤器中待检测目标位的值是否为所述第一预设值。
进一步的,还包括:
布隆向量设置模块,用于将所述预设数据映射为预设长度的数值序列;还用于根据所述预设数据的部分内容映射值确定所述目标布隆过滤器中的基准目标位;还用于将所述数值序列中与所述基准目标位对应的值设置为所述第一预设值,将所述数值序列中除所述基准目标位的其余位置的值设置为第二预设值。
进一步的,所述待检测数据在目标范围内的数据内容包括:将所述待检测数据的全部内容划分为N个数据块,并将每一所述数据块的前M位作为备选数据内容;其中,所述N为小于或等于所述目标布隆过滤器的布隆向量长度的正整数,所述M为小于或等于所述数据块的长度的正整数;将各数据块的备选内容作为所述待检测数据的目标范围内的数据内容。
进一步的,全文匹配模块300包括:
全文映射值匹配单元,用于将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作;
第一判定单元,用于当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值完全相同时,则判定所述待检测数据为所述预设数据;
第二判定单元,用于当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值不完全相同时,则判定所述待检测数据不为所述预设数据。
进一步的,还包括:
数据切换模块,用于若所述目标布隆过滤器的布隆向量中与所述部分内容映射值对应的目标位的值不为所述第一预设值,或所述待检测数据的全文映射值与所有所述预设数据的全文映射值不完全相同时,读取所述待检测数据的下一数据作为新的待检测数据,以便对所述新的待检测数据执行数据匹配操作。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种数据匹配方法,其特征在于,包括:
对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;
判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;
若是,则将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;
若否,则判定所述待检测数据不为所述预设数据。
2.根据权利要求1所述数据匹配方法,其特征在于,所述对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值,包括:
利用哈希函数组中的每一预设哈希函数分别对所述待检测数据在所述目标范围内的数据内容进行映射,得到所述待检测数据在每一所述预设哈希函数下对应的部分内容映射值;
相应的,所述预设数据在所述目标范围内的数据内容的部分内容映射值通过以下方式获得:
利用所述哈希函数组中的每一所述预设哈希函数分别对所述预设数据在所述目标范围内的数据内容进行映射,得到所述预设数据在每一所述预设哈希函数下对应的部分内容映射值。
3.根据权利要求1所述数据匹配方法,其特征在于,判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值,包括:
根据所述待检测数据的部分内容映射值确定待检测目标位;
判断所述目标布隆过滤器中待检测目标位的值是否为所述第一预设值。
4.根据权利要求1所述数据匹配方法,其特征在于,所述布隆向量通过以下方式获得:
将所述预设数据映射为预设长度的数值序列;
根据所述预设数据的部分内容映射值确定所述目标布隆过滤器中的基准目标位;
将所述数值序列中与所述基准目标位对应的值设置为所述第一预设值,将所述数值序列中除所述基准目标位的其余位置的值设置为第二预设值。
5.根据权利要求1所述数据匹配方法,其特征在于,所述待检测数据在目标范围内的数据内容通过以下方式获得:
将所述待检测数据的全部内容划分为N个数据块,并将每一所述数据块的前M位作为备选数据内容;其中,所述N为小于或等于所述目标布隆过滤器的布隆向量长度的正整数,所述M为小于或等于所述数据块的长度的正整数;
将各数据块的备选内容作为所述待检测数据的目标范围内的数据内容。
6.根据权利要求1所述数据匹配方法,其特征在于,将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据,包括:
将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作;
当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值完全相同时,则判定所述待检测数据为所述预设数据;
当所述匹配结果为所述待检测数据的全文映射值与所述预设数据的全文映射值不完全相同时,则判定所述待检测数据不为所述预设数据。
7.根据权利要求1至6任一项所述数据匹配方法,其特征在于,还包括:
若所述目标布隆过滤器的布隆向量中与所述部分内容映射值对应的目标位的值不为所述第一预设值,或所述待检测数据的全文映射值与所有所述预设数据的全文映射值不完全相同时,读取所述待检测数据的下一数据作为新的待检测数据,并对所述新的待检测数据执行数据匹配操作。
8.一种数据匹配装置,其特征在于,包括:
部分映射模块,用于对待检测数据在目标范围内的数据内容进行映射,得到所述待检测数据的部分内容映射值;
判断模块,用于判断目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值是否均为第一预设值;其中,所述布隆向量通过将预设数据在所述目标范围内的数据内容的部分内容映射值对应位置的值设置为所述第一预设值得到;
全文匹配模块,用于当所述目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值均为第一预设值时,将所述待检测数据的全文映射值与所述预设数据的全文映射值进行匹配操作,并根据匹配结果判定所述待检测数据是否为所述预设数据;
结果判定模块,用于当所述目标布隆过滤器的布隆向量中与所述待检测数据的部分内容映射值对应的目标位的值不均为第一预设值时,判定所述待检测数据不为所述预设数据。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至7任一项所述数据匹配方法的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至7任一项所述数据匹配方法的步骤。
CN201911137453.8A 2019-11-19 2019-11-19 一种数据匹配方法、装置、电子设备及存储介质 Pending CN110865982A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911137453.8A CN110865982A (zh) 2019-11-19 2019-11-19 一种数据匹配方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911137453.8A CN110865982A (zh) 2019-11-19 2019-11-19 一种数据匹配方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN110865982A true CN110865982A (zh) 2020-03-06

Family

ID=69655380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911137453.8A Pending CN110865982A (zh) 2019-11-19 2019-11-19 一种数据匹配方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110865982A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112714040A (zh) * 2020-12-11 2021-04-27 深圳供电局有限公司 全息报文检测方法、装置、设备及存储介质
CN113051566A (zh) * 2021-03-29 2021-06-29 深信服科技股份有限公司 一种病毒检测方法、装置、电子设备及存储介质
CN115952172A (zh) * 2023-03-08 2023-04-11 畅捷通信息技术股份有限公司 一种基于数据库临时表的数据匹配方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663090A (zh) * 2012-04-10 2012-09-12 华为技术有限公司 元数据查询方法和装置
CN106445944A (zh) * 2015-08-06 2017-02-22 阿里巴巴集团控股有限公司 一种数据查询请求的处理方法、装置及电子设备
US20190004806A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Branch prediction for fixed direction branch instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663090A (zh) * 2012-04-10 2012-09-12 华为技术有限公司 元数据查询方法和装置
CN106445944A (zh) * 2015-08-06 2017-02-22 阿里巴巴集团控股有限公司 一种数据查询请求的处理方法、装置及电子设备
US20190004806A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Branch prediction for fixed direction branch instructions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112714040A (zh) * 2020-12-11 2021-04-27 深圳供电局有限公司 全息报文检测方法、装置、设备及存储介质
CN113051566A (zh) * 2021-03-29 2021-06-29 深信服科技股份有限公司 一种病毒检测方法、装置、电子设备及存储介质
CN115952172A (zh) * 2023-03-08 2023-04-11 畅捷通信息技术股份有限公司 一种基于数据库临时表的数据匹配方法及装置

Similar Documents

Publication Publication Date Title
CN109040341B (zh) 智能合约地址的生成方法、装置、计算机设备及可读存储介质
CN109347787B (zh) 一种身份信息的识别方法及装置
CN110865982A (zh) 一种数据匹配方法、装置、电子设备及存储介质
Breitinger et al. Performance issues about context-triggered piecewise hashing
CN112019519B (zh) 网络安全情报威胁度的检测方法、装置和电子装置
CN105447113A (zh) 一种基于大数据的信息分析方法
CN104978521A (zh) 一种实现恶意代码标注的方法及系统
Song et al. Permission Sensitivity-Based Malicious Application Detection for Android
CN112395612A (zh) 一种恶意文件检测方法、装置、电子设备及存储介质
CN109145651B (zh) 一种数据处理方法及装置
CN111443899B (zh) 一种元素处理方法、装置、电子设备及存储介质
CN112073444A (zh) 数据集的处理方法、装置和服务器
CN114297630A (zh) 恶意数据的检测方法、装置、存储介质及处理器
WO2016173267A1 (zh) 一种完整性校验方法和装置
CN111030978B (zh) 一种基于区块链的恶意数据获取方法、装置及存储设备
CN108804917B (zh) 一种文件检测方法、装置、电子设备及存储介质
CN108650249B (zh) Poc攻击检测方法、装置、计算机设备和存储介质
CN114826793B (zh) 一种rop链的检测方法、装置及介质
CN116032576A (zh) 一种基于不确定性攻击资源图谱的构建方法及系统
CN114567613A (zh) 一种真实ip识别方法、装置、电子设备及存储介质
CN111694588B (zh) 引擎升级检测方法、装置、计算机设备和可读存储介质
CN112560085A (zh) 业务预测模型的隐私保护方法及装置
CN111639340A (zh) 恶意应用程序检测方法、装置、电子设备及可读存储介质
CN114024937B (zh) 一种dns缓存投毒的检测方法及装置
CN115580474B (zh) 一种密钥跟随的文件加密的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20200306

RJ01 Rejection of invention patent application after publication