散列密钥产生方法与装置的制作方法

文档序号:7707123阅读:133来源:国知局
专利名称:散列密钥产生方法与装置的制作方法
技术领域
本发明涉及一种散列密钥产生方法与装置。
背景技术
散列法(hashing)为一种网络桥接器或路由器用于因特网协议地址(IP address)搜寻的方法。传统的搜寻方式,如循序搜寻法或二分搜寻法,都是利用键值来做 比较,其搜寻的效率决定于比较的总次数。散列法是将输入数据直接转换成相对应位置, 因此不需要经过比较,可以直接经过转换输入数据而得到记录所在的位置。利用散列法 搜寻数据,与其搜寻次数与搜寻数据量是无关的。然而,不同的输入数据可能会发生碰撞 (collision),即不同的输入数据转换出相同的位置。如果有足够的存储器空间,或通过设 计适当的散列密钥产生方法便能减低碰撞的发生。此外,散列转换所需时间、可接受的输入 数据长度也成为散列密钥产生方法重要的评价标准。但事实上存储数据的存储器空间是有 限的,因此,如何设计出一种转换快速、可接受不同数据长度及降低碰撞发生机率的散列密 钥产生方法,已成为产业界努力的方向。

发明内容
本发明的散列密钥产生方法与装置利用前缀数据或偏移数据配合执行至少一次 互斥或运算以产生临时密钥。之后,将所述临时密钥结合增补数据以产生散列密钥。此外, 适当调整偏移数据的长度可以降低散列密钥碰撞的发生机率。本发明的一实施范例揭示一种散列密钥产生方法,所述方法包含下列步骤接收 输入数据;设定所述输入数据的变化范围为N个位、群组长度为U个位及散列表个数为W, 其中所述N、U及W为整数;根据所述输入数据的数据长度及所述群组长度,执行至少一次互 斥或运算以产生第一临时密钥;根据所述群组长度及所述第一临时密钥,执行一次互斥或 运算以产生第二临时密钥;以及结合所述第二临时密钥及所述第一临时密钥后L个位数据 以产生散列密钥,其中所述L为正整数。本发明的另一实施范例揭示一种散列密钥产生装置,所述散列密钥产生装置包含 接收单元、设定单元、检查单元、运算单元、结合单元、暂存单元及旋转单元。接收单元用以 接收输入数据。设定单元用以设定所述输入数据的变化范围为N个位、群组长度为U个位、 散列表个数为W及偏移长度,其中N、U及W为整数。检查单元用以根据所述群组长度检查 所述输入数据的长度。运算单元用以根据所述输入数据长度及所述群组长度执行至少一次 互斥或运算以产生第一临时密钥及第二临时密钥。结合单元用以结合所述输入数据与前缀 数据或结合所述第二临时密钥与增补数据以产生长度为(N-log2W)位的散列密钥。暂存单 元用以存储所述输入数据、第一临时密钥及所述第二临时密钥。旋转单元用以根据所述偏 移长度旋转所述输入数据。


图1描绘本发明的实施范例的散列密钥产生方法的流程图;图2显示本发明的散列密钥产生的示意图;图3描绘本发明的另一散列密钥产生的示意图;以及图4描绘本发明的另一实施范例的散列密钥产生装置的框图。
具体实施例方式图1显示本发明的实施范例的散列密钥产生方法的流程图。以下结合图1及图2 说明散列密钥产生方法的流程。在步骤S101中,接收长度为48位的输入数据201。在步骤 S102中,根据用户的需求设定相关参数。在本实施范例中,设定输入数据201的变化范围为 11个位、群组长度为8个位及散列表的个数为2。在步骤S103中,检查输入数据201的长度 是否为群组长度的偶数倍。如果不是,那么在步骤S104中将所述输入数据201结合前缀数 据使得结合后的长度为所述群组长度的偶数倍。在本实施范例中输入数据201的长度为群 组长度的偶数倍。在步骤S105中,判断是否需要旋转数据。如果是,那么在步骤S106中执 行旋转数据。在步骤S105中还可根据在步骤S102所设定的相关参数做判断。在本实施范 例中,步骤S102无执行旋转数据的设定。在步骤S107中执行互斥或运算以产生临时密钥。 在本实施范例中,是以16位(群组长度的两倍)为单位执行互斥或运算以产生第一临时密 钥202而开始,其中第一临时密钥202的长度为16位。接下来再以8位(群组长度)为单 位执行互斥或运算以产生第二临时密钥203',其中第二临时密钥203'的长度为8位。在 步骤S108中结合第二临时密钥203'与增补数据203"以产生散列密钥203,所述散列密 钥203长度为10个位。增补数据203"是第一临时密钥202最后2位的数据。增补数据 203"的长度是根据散列密钥的变化范围、群组长度及散列表个数所决定的。假设输入数据 的变化范围为N个位、群组长度为U个位及散列表个数为W,其中所述N、U及W为整数,那 么增补数据长度为(N-log2W-U)位。在本实施例中N、W、U分别为11、2及8,因此增补数据 203"长度为(ll-log22-8),即2个位。本实施范例用以产生将长度为48位的输入数据放 置于两个散列表的散列密钥,每一个散列表的容量为10个位。为了使所属领域的技术人员可以通过本实施范例的教导来实施本发明,以下搭配 图1及图3,进一步提出一种散列密钥产生方法的实施范例。在步骤S101中,接收输入数据301。在步骤S102中,根据用户的需求设定相关参 数。在本实施范例中,设定将要旋转的偏移数据32、输入数据301的变化范围为N位、群组 长度为U个位及散列表个数为W,其中N、U及W为整数。在步骤S103中,检查输入数据301 的长度是否为群组长度的偶数倍。如果不是,那么在步骤S104中将所述输入数据301结 合前缀数据32使得结合后数据302的长度为所述群组长度的偶数倍。在步骤S105中,判 断是否需要旋转数据。如果是,那么在步骤S106中执行旋转数据。在本实施范例中,步骤 S106中旋转偏移数据31得到旋转后数据303。在步骤S107中执行互斥或运算以产生临时 密钥。在本实施范例中,以2U位为单位执行互斥或运算以产生第一临时密钥304,其中第一 临时密钥304的长度为2U位。接下来再以U位为单位执行互斥或运算以产生第二临时密 钥305',其中第二临时密钥305'的长度为U位。在步骤S108中结合第二临时密钥305' 与增补数据305"以产生散列密钥305,所述增补数据305"长度为(N-log2W-U)个位。增补数据305"是第一临时密钥304最后(N-Iog2W-U)位的数据。因此,本实施范例用以产生 放置于W个散列表的散列密钥,每一个散列表的容量为N-Iog2W个位。为了使所属领域的技术人员可以通过本实施范例的教导来实施本发明,以下搭配 上述散列密钥产生方法,进一步提出一种散列密钥产生装置的实施范例。
图4描绘本发明的另一实施范例的散列密钥产生装置的框图。散列密钥产生装置 400包含接收单元401、暂存单元402、旋转单元403、设定单元404、检查单元405、结合单元 406及运算单元407。接收单元401用以接收输入数据。设定单元404用以设定所述输入数 据的变化范围为N个位、群组长度为U个位、散列表个数为W及偏移长度,其中N、U及W为 整数。检查单元405用以根据所述群组长度检查所述输入数据的长度。运算单元407用以 根据所述输入数据长度及所述群组长度执行至少一次互斥或运算以产生第一临时密钥及 第二临时密钥,其中所述运算单元经设定而以2U个位或U个位为单位执行次互斥或运算。 在本实施范例中,所述第一临时密钥与所述第二密钥的长度分别为2U个位及U个位。结合 单元406用以结合所述输入数据与前缀数据或结合所述第二临时密钥与增补数据以产生 长度为(N-Iog2W)位的散列密钥,其中所述增补数据为所述第一临时密钥的部分数据且长 度为(N-Iog2W-U)个位。暂存单元402用以存储所述输入数据、第一临时密钥及所述第二 临时密钥。旋转单元403则用以根据所述偏移长度而旋转所述输入数据。本发明的技术内容及技术特点已揭示如上,然而所属领域的技术人员仍可能基于 本发明的教示及揭示内容而作种种不背离本发明精神的替换及修改。因此,本发明的保护 范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修改,并为上述 权利要求书所涵盖。
权利要求
一种散列密钥产生方法,其特征在于其包含接收输入数据;设定所述输入数据的变化范围为N个位、群组长度为U个位及散列表个数为W,其中所述N、U及W为整数;根据所述输入数据的数据长度及所述群组长度,执行至少一次互斥或运算以产生第一临时密钥;根据所述群组长度及所述第一临时密钥,执行一次互斥或运算以产生第二临时密钥;以及结合所述第二临时密钥及所述第一临时密钥后L个位数据以产生散列密钥,其中所述L为正整数。
2.根据权利要求1所述的方法,其特征在于其进一步包含如果所述输入数据的长度不为所述群组长度的偶数倍,那么所述输入数据结合前缀数 据使得结合后的长度为所述群组长度的偶数倍。
3.根据权利要求1所述的方法,其特征在于其进一步包含设定偏移长度的步骤。
4.根据权利要求3所述的方法,其特征在于其进一步包含根据所述偏移长度旋转所述 输入数据的步骤。
5.根据权利要求1所述的方法,其特征在于其中所述第一临时密钥的长度为2U个位。
6.根据权利要求1所述的方法,其特征在于其中所述第二临时密钥的长度为U个位。
7.根据权利要求1所述的方法,其特征在于其以2U个位长度为单位,执行所述至少一 次互斥或运算以产生所述第一临时密钥。
8.根据权利要求1所述的方法,其特征在于其以U个位长度为单位,执行所述互斥或运 算以产生所述第二临时密钥。
9.根据权利要求1所述的方法,其特征在于其中所述散列密钥的长度为(N-log2W)位。
10.根据权利要求1所述的方法,其特征在于其中所述L的值计算方式如下L = N-log2W-U。
11.一种散列密钥产生装置,其特征在于其包含接收单元,其用以接收输入数据;设定单元,其用以设定所述输入数据的变化范围为N个位、群组长度为U个位、散列表 个数为W及偏移长度,其中N、U及W为整数;检查单元,其用以根据所述群组长度检查所述输入数据的长度;运算单元,其用以根据所述输入数据的数据长度及所述群组长度执行至少一次互斥或 运算以产生第一临时密钥及第二临时密钥;结合单元,其用以结合所述输入数据与前缀数据或结合所述第二临时密钥与增补数据 以产生散列密钥。
12.根据权利要求11所述的装置,其特征在于其进一步包含暂存单元,所述暂存单元 用以存储所述输入数据、第一临时密钥及所述第二临时密钥。
13.根据权利要求11所述的装置,其特征在于其进一步包含旋转单元,所述旋转单元 用以根据所述偏移长度旋转所述输入数据。
14.根据权利要求11所述的装置,其特征在于其中所述增补数据为所述第一临时密钥的部分数据。
15.根据权利要求11所述的装置,其特征在于其中所述运算单元经设定而以2U个位为 单位执行所述次互斥或运算。
16.根据权利要求11所述的装置,其特征在于其中所述运算单元经设定而以U个位为 单位执行所述次互斥或运算。
17.根据权利要求11所述的装置,其特征在于其中所述第一临时密钥的长度为2U个位。
18.根据权利要求11所述的装置,其特征在于其中所述第二临时密钥的长度为U个位。
19.根据权利要求11所述的装置,其特征在于其中所述增补数据的长度为 (N-log2ff-U)个位。
20.根据权利要求11所述的装置,其特征在于其中所述散列密钥的长度为(N-log2W) 个位。
全文摘要
本发明涉及一种散列密钥产生方法与装置。所述方法利用前缀数据或偏移数据配合执行至少一次互斥或运算以产生临时密钥。之后,将所述临时密钥结合增补数据以产生散列密钥。此外,可适当调整偏移数据的长度以降低散列密钥碰撞的发生几率。
文档编号H04L9/06GK101860431SQ20091013442
公开日2010年10月13日 申请日期2009年4月10日 优先权日2009年4月10日
发明者吕国正 申请人:雷凌科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1