高效散列方法

文档序号:2394091阅读:409来源:国知局
专利名称:高效散列方法
技术领域
本发明涉及数据操作,更具体地,本发明涉及一种高效的把长的数据串表示成短数据串的技术。
散列是一种把长度较长的数据表示成长度较短的数据的技术。该技术在于,二个不同的长度较长的数据代表一个相同的长度较短的数据的概率相对的小。这种特性被称为碰撞概率。
Pr(h(m1)=h(m2))≤ε (1)ϵ≥12l]]>碰撞概率由式(1)表示,该式表明在串x1上执行散列函数“h”的结果和在串x2上执行散列函数“h”的结果相等的概率少于或等于
或ε。
未散列的较长串中包含的位数为“n”,并称为域(domain)。较短的或散列后的串的位数为l,并通常称为散列函数的距(range)。满足式(1)的散列函数通常称为泛ε的。
Pr(h(m1)-h(m2)=Δ)≤ε (2)ϵ≥12l]]>另一个和散列函数相关的典型特性由式(2)表示,该式指出散列函数“h”在串x1上的输出和散列函数在串x2上的输出之间的差等于某预选量Δ的概率小于或等于
或ε。满足式(2)的散列函数通常称为泛εΔ散列函数。Pr(h(m1)=c1,h(m2)=c2)≤ϵ2l---(3)]]>ϵ≥12l]]>某些散列函数还具有由式(3)表示的第三特性。式(3)显示散列函数“h”对输入串x1的输出等于预定的数c1并且散列函数“h”对输入串x2的输出等于预定的数c2的联合概率小于
或ε。满足式(3)的散列函数被称为强泛ε的。满足式(3)的散列函数自动满足式(1)和(2)。
许多应用中使用散列函数,其中之一是简化对文本串的搜索。在运用于文本串搜索时,散列函数用于缩短被存储信息的长度,并且接着把同一散列函数用于缩短搜索准则的长度。然后利用缩短的搜索准则搜索缩短的被存储信息,以便更有效地定位所需的信息条。一旦定位该条所需的信息后,可提供和缩短的文本关联的未散列处理的或全长度的文本。
在无线通信中还把散列函数用于消息鉴定。通过和消息一起发送标记对消息鉴定,该标记是通过对消息执行加密函数计算出的。为消息产生一个标记是计算密集的。散列函数用来把消息缩短成标记,从而所需进行的加密处理不那么计算密集。
h(m)=(ma)modp(4)h(m,···,mk)=(Σi=lkmiαi)modp---(5)]]>诸如式(4)表达的线性散列和式(5)表达的MMH散列现在被用于把较长的数据或文本的串表示成较短的串,其中二个不同的长串产生相同的短串的概率是相对小的。这些散列函数需要字数为“w”的一个密钥和字数为“w”的要被散列的消息或文本进行相乘。结果是,为了对某特定的数据或文本串执行散列需要w2次运算。对于具有许多字的大数据或文本串,这造成计算密集型运算。
本发明提供一种高效散列技术,其用
次运算对“w”个字长的串进行散列,无需现有技术的w2次运算。本发明通过对密钥和被散列的串的之和进行平方以代替该密钥和该串的相乘达到这种效果。
h(m)=((m+a)2modp)mod2l(6)在本发明的一种实施例中,如式(6)所示,通过对消息串“m”和密钥串“a”相加再形成该和的平方对该消息进行散列。在平方运算的结果上执行模为“p”的运算,并且对该模“p”运算的结果执行模为2l的运算。在该情况下,“m”和“a”的长度相同,即“n”位长或“w”字长。请注意“a”可长于“n”位,但最好是“n”位。值“l”代表散列结果后的缩短串的按位数计的长度,并称之为“距”。把值“p”选为第一个大于“2n”的质数,其中“n”是消息串“m”的位数。请注意,式(6)提供一种满足式(1)和(2)的散列方法,即,式(6)的散列方法是泛Δ的。
h(m)=(((m+a)2+b)modp)mod2l(7)在本发明的第二实施例中,提供一种强泛的散列方法。在该情况下,消息串“m”和密钥“a”相加,接着平方所产生的和。消息串“m”和密钥“a”都为“w”字长(各含有“n”个位)。请注意,密钥“a”可含有多于“n”个的位,但“n”为最佳。平方运算的结果和至少为“n”位长的第二密钥b相加。如前面参照式(6)讨论的那样,对平方项和密钥“b”的和进行模为“p”的运算。如参照式(6)说明的那样,对模“p”运算的结果进行模为2l的运算。采用这种散列方法提供了一种满足式(1)、(2)和(3)的强泛散列方法。
在本发明的再一个实施例中,对“k”个消息或串进行散列以产生单个较短的串。h(m1,···,mk)=((Σi=1kmi-ai)2)modp)mod2l---(8)]]>式(8)说明把各为“w”字长的“k”个消息散列以形成单个较短的串。每个消息mi和一个密钥ai相加,并平方产生的和。然后对这“k”个消息相加每个消息mi的平方运算的结果。对总和进行模为“p”的运算。并且对模“p”运算的结果进行模为“2l”的运算。值“p”和“l”和前面的定义相同。式(8)表达的散列方法产生满足式(1)、(2)的泛Δ散列函数。


图1是平方散列方法的流程图;图2是一种强泛平方散列方法的流程图;以及图3是第二种泛Δ平方散列方法的流程图。
图1说明一种实现式(6)的平方散列方法的方法。在步骤100输入输入串或消息“m”。在步骤102输入某输入密钥“a”。消息或串“m”以及密钥“a”各为由“w”个字组成的“n”位长。密钥“a”是一个随机或伪随机数,可长于“n”位,但最好为“n”位。在步骤104,产生串“m”和密钥“a”的和“s”。在步骤106平方和“s”。在步骤108,对步骤106的结果进行模为“p”的运算。“p”是比2n大的下一个质数;然而“p”可以是更大的质数,但它可能降低性能。在步骤110,对步骤108的结果进行模为2l的运算。“l”是输出的短消息或串的位数。在步骤112输出模2l运算的结果。图1的处理造成把“n”位的消息或串缩短成“l”位的消息或串。请注意,如图1相关的处理执行一种满足式(1)、(2)的特性的泛εΔ散列函数。
图2说明一种实现式(7)描述的强泛散列方法的方法。在步骤140,输入消息或串“m”。在步骤142输入密钥“a”和“b”。消息“m”、密钥“a”及“b”各为具有“w”个字的“n”位长。在步骤144,产生消息“m”和密钥“a”的和并作为和“s”存储。在步骤146把和“s”的平方存储成项“SQ”。在步骤148,产生项“SQ”和密钥“b”的和。在步骤150,对步骤148产生的结果进行模为“p”的运算。再次,“p”等于下一个大于2n的质数;不过“p”可以是更大的质数但可能降低性能。在步骤152,对步骤150的结果进行模2l运算。“l”等于该方法输出的串或消息的位数。在步骤154,输出长度为“l”的短消息或串。请注意,图2的方法把“n”位的串或消息缩短成“l”位的串和消息。还请注意,图2的处理是一种满足式(1)、(2)、(3)的特性的强泛ε散列函数。
图3说明一种用于执行式(8)所描述的泛εΔ散列方法的方法。在步骤170,把下标“i”置为等于1并把变量SUM置为等于0。在步骤172输入值“k”。“k”等于要输入的串数或消息数,以生成单个缩短的消息。在步骤174分开消息或串mi,并在步骤176输入密钥ai。请注意,消息或串mi和密钥ai长度相同,各具有由“w”个字组成的“n”个位。密钥“ai”是一个随机或伪随机数并可比“n”位长,但最好为“n”位。ai最好是一个随机数。可以从许多源如伪随机发生器产生随机数。在步骤178,通过生成消息mi和密钥ai的和形成和si。在步骤180,把si的平方置成等于变量SQi。在步骤182,把变量SUM置成等于变量SUM加SQi。在步骤184,检查“i”的值,以判定它是否等于值“k”。若不等于值“k”,执行把下标“i”递增1的步骤186,并接着执行步骤174。若在步骤184中判定“i”的值等于“k”,执行步骤188,其中对变量SUM的当前值进行模为“p”的运算。如上面所述,值“p”是下一个大于值2n的质数,“p”可是更大的质数但这会降低性能。在步骤190,对步骤188产生的结果进行模2l运算。再次,“l”是组成输出串或消息的位数。在步骤192,输出缩短的“l”位的消息或串。请注意,图3的处理把“k”个各为“n”位的消息缩短成一个“l”位的消息。还请注意,图3的散列方法是一种满足式(1)和(2)的特性的泛εΔ散列方法。
在参照图1、2、3下,请注意典型地根据在所需的长度为“l”的短输出消息和使式(1)和(2)的概率为最小或在强泛ε散列函数情况下,使式(3)的概率为最小之间的折衷选择值“l”。
下面提供简略证明以示出所公开的平方散列函数满足式(1)、(2)和(3)的特性。理论1式(6)描述的散列函数是泛Δ的。证明对于所有“m”≠“n”εZp和ΔεZpPxr[hx(m)-hx(n)=Δ] (1)=Pxr[(m+x)2-(n+x)2=Δ] (2)=Pxr[(m2-“n”2+2(m-n)x=Δ] (3)=1/p (4)其中因为对于任何给定的“m”≠“n”εZp以及δεZp存在唯一的满足式m2-“n”2+2(m-n)x=δ的x,而得到最后一个不等式。理论2式(7)描述的散列函数是散列函数的强泛类证明这是下述引理的直接推论,该引理表示如何把泛Δ类的散列函数转换成强泛类的散列函数。引理1令“h”={hxD→R|xεK}是一个泛Δ类的散列函数,其中R是阿贝尔群,“k”是密钥集。则,由h’x,b(m)≡(hx(m)+b)(其中加法是在群R中的运算)定义的H’={h’x,bD→R|xεK,bεR}是强泛类的散列函数。证明对于所有“m”≠“n”εD以及所有α,βεRPrx,b[hx,b'(m)=α,hx,b'(n)=β]---(5)]]>=Prx,b[hx(m)+b=α,hx(n)+b=β]---(6)]]>=Prx,b[hx(m)-hx(n)=α-β,b=α-hx(m)]---(7)]]>=Prx,b[hx(m)-hx(n)=α-β|b=α-hx(m)]Prx,b[b=α-hx(m)]---(8)]]>=1/lR2(9)由于hx是泛Δ散列函数并且hx(m)-hx(n)可按等概率取R中的任何值,而得到最后一个等式。
权利要求
1.一种产生位集合的缩短表示的方法,包括步骤输入该“n”位的集合;把具有至少“n”位的某密钥和该位集合相加以得到一个和;平方该和以得到和的平方;对和的平方进行模为“p”的运算以产生模“p”结果,其中“p”至少和第一个大于2n的质数一样大;对该模“p”结果进行模为2l的运算以产生模2l结果,其中“l”小于“n”;以及输出该模2l结果。
2.一种产生位集合的缩短表示的方法,包括步骤输入该“n”位的集合;把具有至少“n”位的第一密钥和该位集合相加以得到第一和;平方第一和以得到和的平方;把该和的平方和具有至少“n”位的第二密钥相加以得到第二和;对第二和进行模为“p”的运算以产生模“p”结果,其中“p”至少和第一个大于2n的质数一样大;对该模“p”结果进行模为2l的运算以产生模2l结果,其中“l”小于“n”;以及输出该模2l结果。
3.一种产生位集合的缩短表示的方法,包括步骤输入某“n”位的集合;把具有至少“n”位的某密钥和该位集合相加以得到一个和;平方该和以得到和的平方;至少重复上述三个步骤一次以产生多个和的平方,每次重复这些步骤时采用某个不同的密钥;把多个和的平方相加以产生总和;对总和进行模为“p”的运算以产生模“p”结果,其中“p”至少和第一个大于2n的质数一样大;对该模“p”结果进行模为2l的运算以产生模2l结果,其中“l”小于“n”;以及输出该模2l结果。
全文摘要
一种高效散列技术利用(W
文档编号G09C1/00GK1251451SQ9912312
公开日2000年4月26日 申请日期1999年10月19日 优先权日1998年10月20日
发明者萨瓦尔·帕特尔, 祖尔非卡·阿明·兰姆鲁 申请人:朗迅科技公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1