数据处理的方法和装置制造方法及图纸

技术编号:9060753 阅读:186 留言:0更新日期:2013-08-21 23:52
本发明专利技术公开了一种数据处理的方法和装置。该方法包括:获取关键字的N个字节,N为整数且N≥2;根据该N个字节查J张布兹哈希表Buz?hash?table,得到N个查表结果,2≤J≤N,该J张Buz?hash?table中,后一张Buz?hash?table相对前一张Buz?hash?table进行了循环移位;根据该N个查表结果确定该N个字节的哈希结果。本发明专利技术实施例的数据处理的方法和装置,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。

【技术实现步骤摘要】
数据处理的方法和装置
本专利技术涉及信息
,并且更具体地,涉及数据处理的方法和装置。
技术介绍
哈希(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个字节,N为整数且N≥2;根据所述N个字节查J张布兹哈希表Buz?hash?table,得到N个查表结果,2≤J≤N,所述J张Buz?hash?table中,后一张Buz?hash?table相对前一张Buz?hash?table进行了循环移位;根据所述N个查表结果确定所述N个字节的哈希结果。

【技术特征摘要】
1.一种数据处理的方法,其特征在于,包括:获取关键字的N个字节,N为整数且N≥2;根据所述N个字节查J张布兹哈希表Buzhashtable,得到N个查表结果,2≤J≤N,所述J张Buzhashtable中,后一张Buzhashtable相对前一张Buzhashtable进行了循环移位;根据所述N个查表结果确定所述N个字节的哈希结果。2.根据权利要求1所述的方法,其特征在于,所述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个字节的哈希结果。3.根据权利要求1所述的方法,其特征在于,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个字节的哈希结果。4.根据权利要求1至3中任一项所述的方法,其特征在于,在所述根据所述N个字节查J张布兹哈希表Buzhashtable之前,所述方法还包括:获取预配置的所述J张Buzhashtable。5.根据权利要求2所述的方法,其特征在于,在所述根据所述N个字节查J张布兹哈希表Buzhashtable之前,所述方法还包括:获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到所述J张Buzhashtable。6.根据权利要求3所述的方法,其特征在于,在所述根据所述N个字节查J张布兹哈希表Buzhashtable之前,所述方法还包括:获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到所述J张Buzhashtable。7.根据权利要求2或5所述的方法,其特征在于,所述J张Buzhashtable保存在查找表LUT,或者现场可编程逻辑FPGA的随机访问存储器RAM或只读存储...

【专利技术属性】
技术研发人员:陈清付刘涛梁振宇
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1