CN108768656A - 一种应用于数据校验的哈希算法 - Google Patents
一种应用于数据校验的哈希算法 Download PDFInfo
- Publication number
- CN108768656A CN108768656A CN201810341137.1A CN201810341137A CN108768656A CN 108768656 A CN108768656 A CN 108768656A CN 201810341137 A CN201810341137 A CN 201810341137A CN 108768656 A CN108768656 A CN 108768656A
- Authority
- CN
- China
- Prior art keywords
- data
- hash codes
- check
- word length
- value
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Abstract
本发明提供了一种应用于数据校验的哈希算法,其结构简单,运算速度快,可以使用各种编程语言来实现该算法。其包括步骤:S1、读入需要进行数据校验操作的待处理数据;S2、指定一个二进制形式数据的位数L作为指定字长,将待处理数据按照指定字长L从高位到低位进行分组保存;S3、使用黄金分割参数设置哈希码的初始值;S4、使用黄金分割参数设置哈希码的位移数;S5、将当前的哈希码按照S4得到的位移数进行循环左移后,与现存的数据组中最高位的那组的数据相加,产生新的哈希码;S6、删除在S5中参与过运算的当前最高位的那组数据;S7、重复S5和S6直至S1中保存的分组数据都删除完毕,所得哈希码为最终的校验值,采用校验值进行数据校验。
Description
技术领域
本发明涉及网络安全技术领域,具体为一种应用于数据校验的哈希算法。
背景技术
哈希算法将任意长度数据块映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值,哈希值是该数据块的一种紧凑的数值表示形式。只要更改数据块的任何字节,都会产生不同的哈希值,找到同一散列值的不同输入,在计算上是几乎是不可能的。因此,哈希算法在计算机数据处理上有广泛的应用,使用数据哈希值可以检验数据的完整性、进行数据快速查找、与数据加密算法结合构造安全的数据结构等应用。当前比较常见的哈希算法有MD5、SHA-1、BKDRHash、APHash等等,其通过加减法、位运算、乘法除法、查表、混合实现等方式实现,不同的实现方式在运行速度和哈希效果上有所差异。
现有的物联网技术领域中,在内网、外网以及两个网络之间的存在着大量而频繁的数据的传输、存储等操作,在数据的传输存储等过程中,都需要对数据进行校验,现在需要一种更加快速的算法能够适应物联网通信领域中大量而频繁的数据校验需求。
发明内容
为了能够实现更加快速的数据校验,本发明提供了一种应用于数据校验的哈希算法,其结构简单,运算速度快,可以使用各种编程语言来实现该算法。
本发明技术方案为:其特征在于其包括以下步骤:
步骤1、读入需要进行数据校验操作的原始待处理数据;
步骤2、指定一个二进制形式数据的位数L作为指定字长,将待处理数据按照所述指定字长L从高位到低位进行分组,并保存各组数据;
步骤3、使用黄金分割参数设置哈希码的初始值I,所述黄金分割参数为:0.618,所述初始值I的设置方法包括如下步骤:
(1)计算所述指定字长L能表达的最大无符号整数与所述黄金分割参数的乘积:
(2)对步骤(1)中得到的乘积做取整运算,把乘积的整数部分赋值为哈希码的所述初始值I;
步骤4、使用所述黄金分割参数设置哈希码的位移数N;
步骤5、将当前的哈希码按照步骤4得到的所述位移数N进行循环左移后,与现存的数据组中最高位的那组的数据相加,产生新的哈希码;第一次进行循环左移运算的时候,哈希码使用步骤3中得到的所述初始值I;
步骤6、删除在所述步骤5中参与过运算的当前最高位的那组数据;
步骤7、重复所述步骤5和所述步骤6直至所述步骤1中保存的分组数据都删除完毕,所得哈希码为最终的校验值,采用所述校验值进行数据校验。
其进一步特征为:
所述步骤2中将待处理数据进行所述分组时,如果所述待处理数据的二进制形式的位数不是所述指定字长L的整数倍数,则需要填充数据,使之成为指定字长的整数倍数,所述填充数据方法为:
(Ⅰ)在所述待处理数据尾部填充特定数据的二进制形式,所述特定数据以为0xA为起点,其具体形式为:
0xA1B3C5D7E9F1A3B5C7D9E1F3
(Ⅱ)从所述待处理数据的起点开始依次取出数据,每次取出一位,填入所述待处理数据尾部,直至填充后的待处理数据的二进制形式的位数为所述指定字长L的整数倍数;
所述步骤4中所述设置哈希码的位移数N的方法包括如下步骤:
A、通过所述黄金分割参数与所述指定字长L进行运算,计算出一个中间值:
中间值 = L*(1 - 0.618)
B、对步骤A中得到的所述中间值做取整运算;
C、如果中间值的整数部分是奇数,则将整数部分赋值为所述设置哈希码的位移数N,如果中间值的整数部分是偶数,则加1后赋值为所述设置哈希码的位移数N。
本发明提供的一种应用于数据校验的哈希算法,其采用循环移位和加法构造而成,循环移位数根据黄金分割比例计算出,在保证了哈希码的安全性以及降低了重复率的基础之上,能够更快速的实现数据校验中的校验码计算,且因为其实现步骤的逻辑结构简单,理解容易,适用于各种程序语言的实现。
附图说明
图1为算法流程图;
图2为哈希码初始值的设置流程图;
图3为位移数的设置流程图。
具体实施方式
如图1~图3所示,本发明包括以下步骤:
步骤1、读入需要进行数据校验操作的原始待处理数据。
步骤2、指定一个二进制形式的数据的位数L作为指定字长,将待处理数据按照指定字长L从高位到低位进行分组,并保存各组数据;以指定字长L 为32为例,对待处理数据进行分组并保存,每32位为一组;如果待处理数据的位数不是指定字长L的整数倍数,则需要对剩余的不足32位的数据进行填充,填充方法为:
(Ⅰ)在待处理数据尾部填充特定数据的二进制形式,特定数据以为0xA为起点,具体形式为:
0xA1B3C5D7E9F1A3B5C7D9E1F3
(Ⅱ)从待处理数据的起点开始依次取出数据,每次取出一位,填入待处理数据尾部,直至填充后的待处理数据的二进制位数为指定字长L的整数倍数;
如待处理数据为“123456789012345(0x7048860DDF79)”,其二进制位表达为:
0111 0000 0100 1000 1000 0110 0000 1101 1101 1111 0111 1001
按照指定字长L为32进行分组,则可分为两组,第一组为0x7048860D,二进制形式表达为:
0111 0000 0100 1000 1000 0110 0000 1101
第二组为OxDF79,二进制表达形式为:
1101 1111 0111 1001
第二组不足32位,则需要进行数据填充,填充数据的时候以0xA为起点,依次填充后续数据直至满32位,则得到的数据为:
1101 1111 0111 1001 1010 0001 1011 0011
即填充的数据为0xA1B3,最后一组数据最终为0xDF79A1B3。
步骤3、使用黄金分割参数设置哈希码的初始值I,黄金分割参数为:0.618,初始值I的设置方法包括如下步骤:
(1)计算指定字长L能表达的最大无符号整数与黄金分割参数的乘积:
(2)对步骤(1)中得到的乘积取整,把乘积的整数部分赋值为设置哈希码的初始值I;
当L为32的时候,32位最大无符号整数为4294967295(0xFFFFFFFF),其与黄金分割参数的乘积为2654289788.310,对此数值做取整运算为2654289788,即当L为32的时候,哈希码的初始值I为2654289788。
步骤4、使用黄金分割参数设置哈希码的位移数N;设置哈希码的位移数N的方法包括如下步骤:
A、 通过黄金分割参数与指定字长L进行运算,计算出一个中间值:
中间值 = L*(1 - 0.618)
B、 对步骤A中得到的中间值做取整运算;
C、 如果中间值的整数部分是奇数,则将整数部分赋值为设置哈希码的位移数N,如果中间值的整数部分是偶数,则加1后赋值为设置哈希码的位移数N;
当L 为32的时候,中间值计算后为32*(1-0.618)= 12.224;
取整中间值后所得为12,12为偶数,则需加1后赋值给位移数,即N 为13。
步骤5、将当前的哈希码按照步骤4得到的位移数N进行循环左移后,与现存的数据组中最高位的那组的数据相加,产生新的哈希码;第一次进行循环左移运算的时候,哈希码使用步骤3中得到的初始值I;
第一次计算使用的当前哈希码为初始值I,在步骤3中得到的初始值I为:2654289788,其二进制表示为:
1001 1110 0011 0101 0011 1111 0111 1100
当前位移数N为13,需要把初始值循环左移13位,即把高位13位数字循环移动到低位13位,
← 1001 1110 0011 0 ← 101 0011 1111 0111 1100
则循环左移后所得为:
1010 0111 1110 1111 1001 0011 1100 0110
把位移后的数据与现存的数据组中最高位的那组的数据相加,产生新的哈希码。
步骤6、删除在步骤5中参与过运算的当前最高位的那组数据,剩余的分组数据继续参与后续运算。
步骤7、重复步骤5和步骤6直至步骤1中保存的分组数据都删除完毕,所得哈希码为最终的校验值,采用校验值进行数据校验。
本发明提出的一种应用于数据校验的哈希算法,与现有技术中的BKDRHash算法相比,针对10个字长块计算1亿次,本发明的效率比BKDRHash算法快4%;针对128M字节数据库计算100次,本发明的算法效率比BKDRHash快11%左右;通过本发明的技术方案,可以提供更快速的数据校验,且本算法逻辑结构简单,易于理解,更适用于没有固定开发模式的物联网开发环境。
Claims (3)
1.一种应用于数据校验的哈希算法,其特征在于其包括以下步骤:
步骤1、读入需要进行数据校验操作的原始待处理数据;
步骤2、指定一个二进制形式数据的位数L作为指定字长,将待处理数据按照所述指定字长L从高位到低位进行分组,并保存各组数据;
步骤3、使用黄金分割参数设置哈希码的初始值I,所述黄金分割参数为:0.618,所述初始值I的设置方法包括如下步骤:
(1)计算所述指定字长L能表达的最大无符号整数与所述黄金分割参数的乘积:
(2)对步骤(1)中得到的乘积取整,把乘积的整数部分赋值为哈希码的所述初始值I;
步骤4、使用所述黄金分割参数设置哈希码的位移数N;
步骤5、将当前的哈希码按照步骤4得到的所述位移数N进行循环左移后,与现存的数据组中最高位的那组的数据相加,产生新的哈希码;第一次进行循环左移运算的时候,哈希码使用步骤3中得到的所述初始值I;
步骤6、删除在所述步骤5中参与过运算的当前最高位的那组数据;
步骤7、重复所述步骤5和所述步骤6直至所述步骤1中保存的分组数据都删除完毕,所得哈希码为最终的校验值,采用所述校验值进行数据校验。
2.根据权利要求1所述一种应用于数据校验的哈希算法,其特征在于:所述步骤2中将待处理数据进行所述分组时,如果所述待处理数据的二进制形式的位数不是所述指定字长L的整数倍数,则需要填充数据,使之成为指定字长的整数倍数,所述填充数据方法为:
(Ⅰ)在所述待处理数据尾部填充特定数据的二进制形式,所述特定数据以为0xA为起点,其具体形式为:
0xA1B3C5D7E9F1A3B5C7D9E1F3
(Ⅱ)从所述待处理数据的起点开始依次取出数据,每次取出一位,填入所述待处理数据尾部,直至填充后的待处理数据的二进制形式的位数为所述指定字长L的整数倍数。
3.根据权利要求1所述一种应用于数据校验的哈希算法,其特征在于:所述步骤4中所述设置哈希码的位移数N的方法包括如下步骤:
A、通过所述黄金分割参数与所述指定字长L进行运算,计算出一个中间值:
中间值 = L*(1 - 0.618)
B、对步骤A中得到的所述中间值做取整运算;
C、如果中间值的整数部分是奇数,则将整数部分赋值为所述设置哈希码的位移数N,如果中间值的整数部分是偶数,则加1后赋值为所述设置哈希码的位移数N。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810341137.1A CN108768656B (zh) | 2018-04-17 | 2018-04-17 | 一种基于哈希算法的数据校验方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810341137.1A CN108768656B (zh) | 2018-04-17 | 2018-04-17 | 一种基于哈希算法的数据校验方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108768656A true CN108768656A (zh) | 2018-11-06 |
CN108768656B CN108768656B (zh) | 2021-04-06 |
Family
ID=64010678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810341137.1A Active CN108768656B (zh) | 2018-04-17 | 2018-04-17 | 一种基于哈希算法的数据校验方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108768656B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362580A (zh) * | 2019-07-25 | 2019-10-22 | 重庆市筑智建信息技术有限公司 | 一种bim建筑工程数据检索优化归类方法及其系统 |
CN110413443A (zh) * | 2019-07-25 | 2019-11-05 | 重庆市筑智建信息技术有限公司 | 一种bim资料信息数据检验优化方法及其系统 |
CN110505051A (zh) * | 2019-08-28 | 2019-11-26 | 无锡科技职业学院 | 字符串哈希处理方法及装置 |
CN110705263A (zh) * | 2019-09-26 | 2020-01-17 | 福建榕基软件工程有限公司 | 一种字符信息的录入校验方法和存储介质 |
CN113691352A (zh) * | 2021-08-19 | 2021-11-23 | 白杰 | 数据分割方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894229A (zh) * | 2010-06-30 | 2010-11-24 | 华南理工大学 | 一种兼容三种sha标准的装置及其实现方法 |
US20110123021A1 (en) * | 2009-11-24 | 2011-05-26 | International Business Machines Corporation | Surrogate key generation using cryptographic hashing |
CN102542070A (zh) * | 2012-01-17 | 2012-07-04 | 王勇 | 基于随机函数的单向哈希函数构造方法 |
CN104158648A (zh) * | 2013-05-14 | 2014-11-19 | 罗伯特·博世有限公司 | 用于生成哈希值的方法和装置 |
CN104504038A (zh) * | 2014-12-15 | 2015-04-08 | 北京更快互联网技术有限公司 | 一种减少哈希冲突的哈希查找方法 |
CN105631013A (zh) * | 2015-12-29 | 2016-06-01 | 华为技术有限公司 | 生成哈希值的装置和方法 |
-
2018
- 2018-04-17 CN CN201810341137.1A patent/CN108768656B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110123021A1 (en) * | 2009-11-24 | 2011-05-26 | International Business Machines Corporation | Surrogate key generation using cryptographic hashing |
CN101894229A (zh) * | 2010-06-30 | 2010-11-24 | 华南理工大学 | 一种兼容三种sha标准的装置及其实现方法 |
CN102542070A (zh) * | 2012-01-17 | 2012-07-04 | 王勇 | 基于随机函数的单向哈希函数构造方法 |
CN104158648A (zh) * | 2013-05-14 | 2014-11-19 | 罗伯特·博世有限公司 | 用于生成哈希值的方法和装置 |
CN104504038A (zh) * | 2014-12-15 | 2015-04-08 | 北京更快互联网技术有限公司 | 一种减少哈希冲突的哈希查找方法 |
CN105631013A (zh) * | 2015-12-29 | 2016-06-01 | 华为技术有限公司 | 生成哈希值的装置和方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362580A (zh) * | 2019-07-25 | 2019-10-22 | 重庆市筑智建信息技术有限公司 | 一种bim建筑工程数据检索优化归类方法及其系统 |
CN110413443A (zh) * | 2019-07-25 | 2019-11-05 | 重庆市筑智建信息技术有限公司 | 一种bim资料信息数据检验优化方法及其系统 |
CN110362580B (zh) * | 2019-07-25 | 2021-09-24 | 重庆市筑智建信息技术有限公司 | 一种bim建筑工程数据检索优化归类方法及其系统 |
CN110505051A (zh) * | 2019-08-28 | 2019-11-26 | 无锡科技职业学院 | 字符串哈希处理方法及装置 |
CN110705263A (zh) * | 2019-09-26 | 2020-01-17 | 福建榕基软件工程有限公司 | 一种字符信息的录入校验方法和存储介质 |
CN113691352A (zh) * | 2021-08-19 | 2021-11-23 | 白杰 | 数据分割方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108768656B (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108768656A (zh) | 一种应用于数据校验的哈希算法 | |
KR102137956B1 (ko) | 블록 마이닝 방법 및 장치 | |
US8145692B2 (en) | Digital generation of an accelerated or decelerated chaotic numerical sequence | |
CN105426413B (zh) | 一种编码方法及装置 | |
Mouha et al. | The differential analysis of S-functions | |
Zong et al. | Collision attacks on round-reduced Gimli-hash/ascon-xof/ascon-hash | |
CN104834539B (zh) | 一种数据增量更新方法 | |
CN107666387A (zh) | 低功耗并行哈希计算电路 | |
Barhum et al. | On the power of advice and randomization for the disjoint path allocation problem | |
CN107786211A (zh) | 一种ira‑qc‑ldpc码的代数结构获取方法、编码方法和编码器 | |
CN102594566A (zh) | 一种面向无线传感器网络的混沌消息认证码实现方法 | |
CN104580017B (zh) | 基于rss的网络会话分发方法及系统 | |
US8225100B2 (en) | Hash functions using recurrency and arithmetic | |
CN109547160B (zh) | 一种循环移位网络编码构造方法 | |
CN107885486B (zh) | 一种基于查找树的复合有限域求逆装置 | |
CN112332857B (zh) | 一种用于ldpc码的循环移位网络系统及循环移位方法 | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
CN100388629C (zh) | 一种循环冗余校验的快速计算方法 | |
WO2024007506A1 (zh) | 一种通用轻量哈希处理方法、系统及可储存介质 | |
CN106650240A (zh) | 并行哈希函数的构造方法 | |
CN106301764B (zh) | 基于路径散列的消息摘要方法和系统 | |
CN110505051A (zh) | 字符串哈希处理方法及装置 | |
CN101202618A (zh) | 利用环迭代结构生成消息摘要的方法和装置 | |
Zhang et al. | Collision attacks on round-reduced SHA-3 using conditional internal differentials | |
CN111526120B (zh) | 一种多级流水线电路生成tcp校验和的方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |