数据处理的方法和装置与流程

文档序号:12007859阅读:179来源:国知局
本发明涉及信息
技术领域
,并且更具体地,涉及数据处理的方法和装置。
背景技术
:哈希(Hash)算法以其均匀散列、快速收缩、不可逆等特性,在海量用户管理和信息安全等相关领域被广泛应用。在硬件加速实现的Hash计算中以布兹(RobertUzgalis,Buz)/BKDR(BrianKernighanandDennisRitchie)算法最为常见,实现时常规做法是通过以特征字的线性查表后,经过特征字的字节长度次迭代移位模2加法计算后获得均匀的Hash散列值,因此其计算速度取决于查表效率和待计算的特征字长度,一般匹配速度慢,不能很好满足高速网络中对大量流进行匹配的需要。Buzhash只需要移位及异或操作,适合于硬件实现,在业内广泛应用于硬件hash计算。然而,现有的Buzhash算法只能串行查找,在输入的关键字比较长,且对性能要求比较高的地方,不能够满足需求。技术实现要素:本发明实施例提供了一种数据处理的方法和装置,能够提升系统性能。第一方面,提供了一种数据处理的方法,包括:获取关键字的N个字节,N为整数且N≥2;根据该N个字节查J张布兹哈希表Buzhashtable,得到N个查表结果,2≤J≤N,该J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位;根据该N个查表结果确定该N个字节的哈希结果。在第一种可能的实现方式中,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buzhashtable,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn查n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。在第二种可能的实现方式中,J=N,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buzhashtable,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。结合第一方面或第一方面的第一或二种可能的实现方式,在第三种可能的实现方式中,在根据该N个字节查J张布兹哈希表Buzhashtable之前,该方法还包括:获取预配置的该J张Buzhashtable。结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,在根据该N个字节查J张布兹哈希表Buzhashtable之前,该方法还包括:获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。结合第一方面的第二种可能的实现方式,在第五种可能的实现方式中,在根据该N个字节查J张布兹哈希表Buzhashtable之前,该方法还包括:获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。结合第一方面的第一或四种可能的实现方式,在第六种可能的实现方式中,该J张Buzhashtable保存在查找表(lookuptable,LUT),或者现场可编程逻辑(FieldProgrammableGateArray,FPGA)的随机访问存储器(RandomAccessMemory,RAM)或只读存储器(ReadOnlyMemory,ROM)中。第二方面,提供了一种数据处理的装置,包括:第一获取模块,用于获取关键字的N个字节,N为整数且N≥2;查表模块,用于根据该N个字节查J张布兹哈希表Buzhashtable,得到N个查表结果,2≤J≤N,该J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位;处理模块,用于根据该N个查表结果确定该N个字节的哈希结果。在第一种可能的实现方式中,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;该查表模块具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节kn查n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};该处理模块具体用于,将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]},对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。在第二种可能的实现方式中,J=N,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;该查表模块具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};该处理模块具体用于,对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。结合第二方面或第二方面的第一或二种可能的实现方式,在第三种可能的实现方式中,该装置还包括:第二获取模块,用于在该查表模块根据该N个字节查J张布兹哈希表Buzhashtable之前,获取预配置的该J张Buzhashtable。结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,该装置还包括:第三获取模块,用于在该查表模块根据该N个字节查J张布兹哈希表Buzhashtable之前,获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。结合第二方面的第二种可能的实现方式,在第五种可能的实现方式中,该装置还包括:第四获取模块,用于在该查表模块根据该N个字节查J张布兹哈希表Buzhashtable之前,获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。结合第二方面的第一或四种可能的实现方式,在第六种可能的实现方式中,该J张Buzhashtable保存在LUT,或者FPGA的RAM或ROM中。基于上述技术方案,本发明实施例的数据处理的方法和装置,通过取关键字的N个字节同时查J张循环移位的Buzhashtable并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明一个实施例的数据处理的方法的示意性流程图。图2是根据本发明另一实施例的数据处理的方法的示意性流程图。图3是根据本发明又一实施例的数据处理的方法的示意性流程图。图4是根据本发明又一实施例的数据处理的方法的示意图。图5是根据本发明又一实施例的数据处理的方法的示意图。图6是根据本发明一个实施例的数据处理的装置的示意性框图。图7是根据本发明又一实施例的数据处理的装置的结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。图1示出了根据本发明实施例的数据处理的方法100的示意性流程图。该方法100由数据处理的装置执行。如图1所示,该方法100包括:S110,获取关键字的N个字节,N为整数且N≥2;S120,根据该N个字节查J张Buzhashtable,得到N个查表结果,2≤J≤N,该J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位;S130,根据该N个查表结果确定该N个字节的哈希结果。现有的Buzhash算法对于关键字的每个字节需要依次进行查表、循环移位和异或操作,计算效率较低。在本发明实施例中,为了提高效率,将串行操作转化为并行操作。数据处理的装置首先获取数据的关键字的N个字节,根据该N个字节查J张Buzhashtable,得到N个查表结果。其中,该J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位,即每张表相对前一张表进行了循环移位。也就是说,取关键字的N个字节,同时查J张进行了循环移位的Buzhashtable,对于每个字节得到一个查表结果,同时得到N个查表结果。然后,数据处理的装置根据该N个查表结果进行计算,对该N个查表结果进行异或处理,或者对该N个查表结果先移较少位再进行异或处理,得到该N个字节的哈希结果,以实现对数据的处理。由于J张Buzhashtable已经进行了循环移位,这样,通过取关键字的N个字节同时进行查表和计算,可以提高查表和计算效率,从而能够提升系统性能。因此,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查J张循环移位的Buzhashtable并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。数据处理的装置获取关键字的N个字节以进行查表。可选地,N的值可以为关键字(key)的全部字节数,也可以小于key的全部字节数。例如,若key的字节数为N,则可以取这N个字节同时进行查表;或者,若key的字节数为M×N,则可依次取其中的N个字节同时进行查表。在本发明实施例中,如图2所示,可选地,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;S120包括:S121,对于该N个字节[k0,k1,...,kN-1]中的字节kn查n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};S130包括:S131,将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};S132,对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。具体而言,在本实施例中,Buzhashtable的张数表示向上取整。即Buzhashtable的张数为同时查表的字节数的一半。例如,若N为10,则Buzhashtable的张数为5,若N为9,则Buzhashtable的张数也为5。这样,可以每两个字节查一张表。换句话说,每张表支持双输入双输出,因此,张Buzhashtable可以使得N个字节同时查表。该J张Buzhashtable中,tablej相对tablej-1循环移2位,即每张表相对前一张表循环移2位。在对N个字节[k0,k1,...,kN-1]查J张Buzhashtable[table0,table1,...,tableJ-1]时,对于字节kn查表示向下取整。也就是说,每两个字节查一张表。例如,字节k0,k1查table0,字节k2,k3查table1,字节k4,k5查table2,依次类推,一共得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。由于每张表已经相对前一张表循环移了2位,因此,查表后的结果为经过移位的,不需再进行移位或者仅需再移1位。因此,数据处理的装置将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]}。由于J张Buzhashtable中每张表相对前一张表循环移2位,每两个字节查一张表后,这两个字节中的第一个字节对应的查表结果不需要再移位,而这两个字节中的第二个字节对应的查表结果只需再移1位。数据处理的装置将N个查表结果{T[k0],T[k1],...,T[kN-1]}中下标为偶数的查表结果保持不变,下标为奇数的查表结果循环移1位,得到移位后的结果{RT[k0],RT[k1],...,RT[kN-1]}。数据处理的装置再对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。也就是说,将RT[k0],RT[k1],...,RT[kN-1]全部异或得到哈希结果。由于{RT[k0],RT[k1],...,RT[kN-1]}为移位后的结果,因此,只需对其进行异或操作即可得到该N个字节的哈希结果。若key的字节数为N,则可直接得到key对应的哈希结果;若key的字节数为M×N,则可依次将前N个字节对应的哈希结果循环移N位后与后N个字节对应的哈希结果进行异或得到key对应的哈希结果。这样,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查张循环移位的Buzhashtable并将查表结果相应地移1位或保持不变后再进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。在本发明实施例中,如图3所示,可选地,J=N,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;S120包括:S126,对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};S130包括:S136,对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。具体而言,在本实施例中,Buzhashtable的张数J=N。即Buzhashtable的张数等于同时查表的字节数。例如,若N为10,则Buzhashtable的张数为10。这样,可以每个字节查一张表。换句话说,每张表单输入单输出时,N个字节同时查N张Buzhashtable。该J(即N)张Buzhashtable中,tablej相对tablej-1循环移1位,即每张表相对前一张表循环移1位。在对N个字节[k0,k1,...,kN-1]查J(即N)张Buzhashtable[table0,table1,...,tableJ-1]时,对于字节kn查tablen。也就是说,每个字节查一张表。字节k0查table0,字节k1查table1,字节k2查table2,依次类推,一共得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。由于N张Buzhashtable中每张表已经相对前一张表循环移了1位,因此,N个查表结果为经过移位的,不需再进行移位。因此,数据处理的装置直接对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。若key的字节数为N,则可直接得到key对应的哈希结果;若key的字节数为M×N,则可依次将前N个字节对应的哈希结果循环移N位后与后N个字节对应的哈希结果进行异或得到key对应的哈希结果。这样,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查N张循环移位的Buzhashtable并将查表结果进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。应理解,Buzhashtable的张数J还可以取其他数值,比如,在支持多输入多输出的情况下,Buzhashtable的张数还可以减少,只要满足N个字节同时查表即可。例如,在J取时,每三个字节查一张表,在每张表对应的三个查表结果中,第一个结果不移位,第二个结果移1位,第三个结果移2位,然后再进行异或处理得到最终的哈希结果。在本发明实施例中,可选地,用于查表的J张Buzhashtable可以预先配置好,也可以只配置一张表,而由数据处理的装置通过循环移位得到其他的表。在本发明实施例中,可选地,在S120之前,该方法100还包括:获取预配置的该J张Buzhashtable。具体而言,在本实施例中,J张Buzhashtable由用户预先配置好。也就是说,用户直接配置移位后的J张Buzhashtable,数据处理的装置取关键字的N个字节同时查该J张Buzhashtable以得到移位后的结果。可选地,在即采用张Buzhashtable时,在S120之前,该方法100还包括:获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。具体而言,在本实施例中,用户只配置第一张Buzhashtable,即原始的表。数据处理的装置通过循环移位得到其他的表。在即采用张Buzhashtable时,数据处理的装置将tablej-1循环移2位作为tablej,即将前一张表循环移2位作为后一张表,这样得到其他J-1张表,从而得到J张移位后的Buzhashtable。可选地,在J=N,即采用N张Buzhashtable时,在S120之前,该方法100还包括:获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。具体而言,在本实施例中,用户只配置第一张Buzhashtable,即原始的表。数据处理的装置通过循环移位得到其他的表。在J=N,即采用N张Buzhashtable时,数据处理的装置将tablej-1循环移1位作为tablej,即将前一张表循环移1位作为后一张表,这样得到其他J-1张表,从而得到J张移位后的Buzhashtable。在本发明实施例中,可选地,在即采用张Buzhashtable时,该J张Buzhashtable保存在LUT,或者FPGA的RAM或ROM中。具体而言,在即采用张Buzhashtable时,用于查表的J张Buzhashtable可以保存在支持双输入与双输出的资源中,例如,LUT,或者FPGA的RAM或ROM,但本发明对此并不限定,Buzhashtable也可以保存在其他支持双输入与双输出的资源中。下面将结合具体的例子详细描述本发明实施例。应注意,这只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。假定key有N个字节[k0,k1,...,kN-1],如图4所示,在Buzhashtable双输入时,需要张Buzhashtable。该张Buzhashtable中,每张表相对前一张表循环移2位。比如,table1相对table0循环移2位,那么table1里的256个表项都相对table0里的对应表项循环移2位。该张Buzhashtable可以由用户预配置好,也可以由数据处理的装置根据用户预配置的table0通过循环移位得到。取该N个字节查该张Buzhashtable。具体地,对于字节kn查例如,字节k0,k1查table0,字节k2,k3查table1,字节k4,k5查table2,依次类推,得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。将该N个查表结果{T[k0],T[k1],...,T[kN-1]}中下标为偶数的查表结果保持不变,下标为奇数的查表结果循环移1位,得到移位后的结果{RT[k0],RT[k1],...,RT[kN-1]}。也就是说,T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...;T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...。将{RT[k0],RT[k1],...,RT[kN-1]}全部做异或得到最终的哈希结果。因为{RT[k0],RT[k1],...,RT[kN-1]}已经是移位的结果,因此直接将其异或得到的结果即为最终的哈希结果。如图5所示,在Buzhashtable单输入时,需要N张Buzhashtable。该N张Buzhashtable中,每张表相对前一张表循环移1位。比如,table1相对table0循环移1位,那么table1里的256个表项都相对table0里的对应表项循环移1位。该N张Buzhashtable可以由用户预配置好,也可以由数据处理的装置根据用户预配置的table0通过循环移位得到。取该N个字节查该N张Buzhashtable。具体地,对于字节kn查tablen。即,字节k0查table0,字节k1查table1,字节k2查table2,依次类推,得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。将N个查表结果{T[k0],T[k1],...,T[kN-1]}全部做异或得到最终的哈希结果。因为N个查表结果{T[k0],T[k1],...,T[kN-1]}已经是移位的结果,因此直接将其异或得到的结果即为最终的哈希结果。因此,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查J张循环移位的Buzhashtable并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上文中结合图1至图5,详细描述了根据本发明实施例的数据处理的方法,下面将结合图6和图7,描述根据本发明实施例的数据处理的装置。图6示出了根据本发明实施例的数据处理的装置600的示意性框图。如图6所示,该装置600包括:第一获取模块610,用于获取关键字的N个字节,N为整数且N≥2;查表模块620,用于根据该N个字节查J张布兹哈希表Buzhashtable,得到N个查表结果,2≤J≤N,该J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位;处理模块630,用于根据该N个查表结果确定该N个字节的哈希结果。在本发明实施例中,为了提高效率,将串行操作转化为并行操作。数据处理的装置600的第一获取模块610获取数据的关键字的N个字节,查表模块620根据该N个字节查J张Buzhashtable,得到N个查表结果。其中,该J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位,即每张表相对前一张表进行了循环移位。也就是说,取关键字的N个字节,同时查J张进行了循环移位的Buzhashtable,对于每个字节得到一个查表结果,同时得到N个查表结果。处理模块630根据该N个查表结果进行计算,得到该N个字节的哈希结果,以实现对数据的处理。由于J张Buzhashtable已经进行了循环移位,这样,通过取关键字的N个字节同时进行查表和计算,可以提高查表和计算效率,从而能够提升系统性能。因此,本发明实施例的数据处理的装置,通过取关键字的N个字节同时查J张循环移位的Buzhashtable并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。第一获取模块610获取关键字的N个字节以进行查表。可选地,N的值可以为关键字(key)的全部字节数,也可以小于key的全部字节数。例如,若key的字节数为N,则可以取这N个字节同时进行查表;或者,若key的字节数为M×N,则可依次取其中的N个字节同时进行查表。在本发明实施例中,可选地,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;该查表模块620具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节kn查n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};该处理模块630具体用于,将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]},对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。本发明实施例的数据处理的装置,通过取关键字的N个字节同时查张循环移位的Buzhashtable并将查表结果相应地移1位或保持不变后再进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。在本发明实施例中,可选地,J=N,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;该查表模块620具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};该处理模块630具体用于,对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。本发明实施例的数据处理的装置,通过取关键字的N个字节同时查N张循环移位的Buzhashtable并将查表结果进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。在本发明实施例中,可选地,用于查表的J张Buzhashtable可以预先配置好,也可以只配置一张表,而由数据处理的装置通过循环移位得到其他的表。在本发明实施例中,可选地,该装置600还包括:第二获取模块,用于在该查表模块620根据该N个字节查J张布兹哈希表Buzhashtable之前,获取预配置的该J张Buzhashtable。在本发明实施例中,可选地,该装置600还包括:第三获取模块,用于在该查表模块620根据该N个字节查J张布兹哈希表Buzhashtable之前,获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。在本发明实施例中,可选地,该装置600还包括:第四获取模块,用于在该查表模块620根据该N个字节查J张布兹哈希表Buzhashtable之前,获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。在本发明实施例中,可选地,在即采用张Buzhashtable时,该J张Buzhashtable保存在LUT,或者FPGA的RAM或ROM中。根据本发明实施例的数据处理的装置600可对应于根据本发明实施例的数据处理的方法中的执行主体,并且装置600中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5中的各个方法的相应流程,为了简洁,在此不再赘述。本发明实施例的数据处理的装置,通过取关键字的N个字节同时查J张循环移位的Buzhashtable并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。图7示出了本发明的又一实施例提供的数据处理的装置的结构,包括至少一个处理器702(例如CPU),至少一个网络接口705或者其他通信接口,存储器706,和至少一个通信总线703,用于实现这些装置之间的连接通信。处理器702用于执行存储器706中存储的可执行模块,例如计算机程序。存储器706可能包含高速随机存取存储器(RAM:RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个网络接口705(可以是有线或者无线)实现该系统网关与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。在一些实施方式中,存储器706存储了程序7061,程序7061可以被处理器702执行,这个程序包括:获取关键字的N个字节,N为整数且N≥2;根据该N个字节查J张布兹哈希表Buzhashtable,得到N个查表结果,2≤J≤N,该J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位;根据该N个查表结果确定该N个字节的哈希结果。可选地,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buzhashtable,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn查n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。可选地,J=N,该J张Buzhashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buzhashtable,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。可选地,在根据该N个字节查J张布兹哈希表Buzhashtable之前,还包括:获取预配置的该J张Buzhashtable。可选地,在根据该N个字节查J张布兹哈希表Buzhashtable之前,还包括:获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。可选地,在根据该N个字节查J张布兹哈希表Buzhashtable之前,还包括:获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buzhashtable。可选地,该J张Buzhashtable保存在LUT,或者FPGA的RAM或ROM中。从本发明实施例提供的以上技术方案可以看出,本发明实施例通过取关键字的N个字节同时查J张循环移位的Buzhashtable并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1