字符串哈希处理方法及装置制造方法及图纸

技术编号:22661269 阅读:19 留言:0更新日期:2019-11-28 04:29
本发明专利技术提供了一种字符串哈希处理方法及装置,该字符串哈希处理方法包括:获取字符串数据并设置所述字符串数据的哈希码初始值,所述哈希码初始值的末位为奇数;基于所述哈希码初始值对所述字符串数据中的目标字符进行哈希处理,以得到所述目标字符的哈希码值;基于所述目标字符的哈希码值得到所述字符串数据的哈希码值。本发明专利技术用以降低哈希码值的重复率,具有良好的哈希效果。

Method and device of string hash processing

The invention provides a string hash processing method and device, the string hash processing method includes: obtaining string data and setting the initial value of the hash code of the string data, the last bit of the initial value of the hash code is odd; hashing the target character in the string data based on the initial value of the hash code to obtain the hash of the target character The hash code value based on the hash code value of the target character to the hash code value of the string data. The invention is used to reduce the repetition rate of hash code value and has good hash effect.

【技术实现步骤摘要】
字符串哈希处理方法及装置
本专利技术涉及哈希处理方法领域,尤其涉及一种字符串哈希处理方法及装置。
技术介绍
哈希算法将任意长度数据块映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值,哈希值是该数据块的一种紧凑的数值表示形式。只要更改数据块的任何字节,都会产生不同的哈希值,找到同一散列值的不同输入,在计算上是几乎是不可能的。因此,哈希算法在计算机数据处理上有广泛的应用,使用数据哈希值可以检验数据的完整性、对数据实现快速查找、与数据加密算法结合构造安全数据结构等。哈希(Hash)算法,即散列函数,是一种单向密码体制,是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。哈希算法的实现方式有加减法、位运算、乘法除法、查表、混合实现等,不同的实现方式在运行速度和哈希效果上有所差异。比较常见的算法如MD5、SHA-1、BKDRHash、APHash等。不同的哈希算法有不同的特性,适用在不同的场合,比如有的哈希算法安全性高,有的哈希算法速度快。在很多应用场合,需要对字符串类型的数据进行哈希计算,针对字符串设计的哈希算法对字符串进行哈希计算效果更好、速度更快。有鉴于此,有必要对现有技术中的字符串哈希处理的方法予以改进,以解决上述问题。
技术实现思路
本专利技术的目的在于提供一种字符串哈希处理方法及装置,用以降低哈希码值的重复率,以提高哈希码的安全性。为实现上述目的,本专利技术是这样实现的:第一方面,提供了一种字符串哈希处理方法,其包括:获取字符串数据并设置所述字符串数据的哈希码初始值,所述哈希码初始值的末位为奇数;基于所述哈希码初始值对所述字符串数据中的目标字符进行哈希处理,以得到所述目标字符的哈希码值;基于所述目标字符的哈希码值得到所述字符串数据的哈希码值。第二方面,本专利技术提供一种字符串哈希处理装置,包括:获取单元,用于获取字符串数据;设置单元,用于设置所述字符串数据的哈希码初始值,所述哈希码初始值的末位为奇数;处理单元,用于基于所述哈希码初始值对所述字符串数据中的目标字符进行哈希处理,以得到所述目标字符的哈希码值,并基于所述目标字符的哈希码值得到所述字符串数据的哈希码值。第三方面,本专利技术还提供一种终端设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。第四方面,本专利技术还一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。本专利技术的字符串哈希处理方法通过设置的末位为奇数的哈希码初始值对获取的字符串数据中的目标字符进行哈希处理,得到目标字符的哈希码值,以根据目标字符的哈希码值得到字符串数据的哈希码值。如此,通过本专利技术的方法不仅使得对字符串数据进行哈希处理的速度快,而且能够使得所得到的哈希码值的分布性比较好,以降低所产生的哈希码值的重复率,从而提高哈希码值的安全性。附图说明图1为根据本专利技术一个实施例的字符串哈希处理方法的示意性流程图;图2为根据本专利技术另一个实施例的字符串哈希处理方法的示意性流程图;图3为根据本专利技术再一个实施例的字符串哈希处理方法的示意性流程图;图4为根据本专利技术再一个实施例的字符串哈希处理方法的示意性流程图;图5为根据本专利技术一个实施例的字符串哈希处理装置的示意性结构框图。具体实施方式下面结合附图所示的各实施方式对本专利技术进行详细说明,但应当说明的是,这些实施方式并非对本专利技术的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本专利技术的保护范围之内。以下结合附图,详细说明本专利技术各实施例提供的技术方案。图1为根据本专利技术一个实施例的字符串哈希处理方法的示意性流程图,字符串哈希处理方法,方法包括:步骤102.获取字符串数据并设置字符串数据的哈希码初始值,哈希码初始值的末位为奇数。步骤104.基于哈希码初始值对字符串数据中的目标字符进行哈希处理,以得到目标字符的哈希码值。步骤106.基于目标字符的哈希码值得到字符串数据的哈希码值。由于本专利技术实施例的字符串哈希处理方法通过设置的末位为奇数的哈希码初始值对获取的字符串数据中的目标字符进行哈希处理,得到目标字符的哈希码值,以根据目标字符的哈希码值得到字符串数据的哈希码值。如此,通过本专利技术实施例的方法不仅使得对字符串数据进行哈希处理的速度快,而且能够使得所得到的哈希码值的分布性比较好,以降低所产生的哈希码值的重复率,从而提高哈希码值的安全性。申请人意外地发现,哈希码初始值的末位设置为奇数,可以使得最终得到的字符串数据的哈希码值的分布性比较好,即字符串数据的哈希码值的重复率比较低。尤其地,将哈希码初始值可以设置为0x7fa1b3c5,能够进一步降低字符串数据的哈希码值的重复率,以进一步提高哈希码值的安全性。在上述实施例中,如图2所示,基于哈希码初始值对字符串数据中的目标字符进行哈希处理,以得到目标字符的哈希码值,包括:步骤202.将哈希码初始值向目标方向位移目标位数,以得到移位后的哈希码值。对于32位字长的哈希码值(如0x7fa1b3c5)来讲,优选地,可以将哈希码初始值向左位移七位,以得到移位后的哈希码值,当然,也可以将哈希码初始值向左位移1-6位。需要说明的是,将哈希码初始值向目标方向位移的目标位数的最大值取决于哈希码初始值的位数,即当哈希码初始值为32位字长时,将哈希码初始值向目标方向位移的目标位数的最优为7(即向左位移7位);当哈希码初始值为64位字长时,将哈希码初始值向目标方向位移的目标位数的最优为7(即向左位移7位),且64位字长的哈希码初始值仍然按照0x7fa1b3c5规律来设置,即64位字长的哈希码初始值可以设置为0x7fa1b3c57fa1b3c5;等等,在此不一一举例说明,由此可见,哈希码初始值向目标方向位移的目标位数的最大值取决于哈希码初始值的位数,不限于本专利技术实施例所限定的保护范围。步骤204.将移位后的哈希码值进行取反,以得到取反后的哈希码值。步骤206.将取反后的哈希码值与字符串数据中的目标字符进行相加处理,以得到相加处理后的哈希码值。步骤208.基于相加处理后的哈希码值得到目标字符的目标哈希值。常见程序设计语言中的字符类型长度为1个字节或2个字节,可以直接使用字符进行加运算。考虑不同程序设计语言整型数据类型的差异,比如Java程序设计语言没有无符号整数,为保证兼容性,充分利用程序设计语言自动类型转换,节省开销,可以在应用时统一规定将字节自动转换为有符号整数。应理解,通过对哈希码值进行移位、取反,然后与字符串数据中的目标字符进行相加处理本文档来自技高网...

【技术保护点】
1.一种字符串哈希处理方法,其特征在于,所述方法包括:/n获取字符串数据并设置所述字符串数据的哈希码初始值,所述哈希码初始值的末位为奇数;/n基于所述哈希码初始值对所述字符串数据中的目标字符进行哈希处理,以得到所述目标字符的哈希码值;/n基于所述目标字符的哈希码值得到所述字符串数据的哈希码值。/n

【技术特征摘要】
1.一种字符串哈希处理方法,其特征在于,所述方法包括:
获取字符串数据并设置所述字符串数据的哈希码初始值,所述哈希码初始值的末位为奇数;
基于所述哈希码初始值对所述字符串数据中的目标字符进行哈希处理,以得到所述目标字符的哈希码值;
基于所述目标字符的哈希码值得到所述字符串数据的哈希码值。


2.根据权利要求1所述的方法,其特征在于,基于所述哈希码初始值对所述字符串数据中的目标字符进行哈希处理,以得到所述目标字符的哈希码值,包括:
将所述哈希码初始值向目标方向位移目标位数,以得到移位后的哈希码值;
将移位后的哈希码值进行取反,以得到取反后的哈希码值;
将取反后的哈希码值与所述字符串数据中的目标字符进行相加处理,以得到相加处理后的哈希码值;
基于相加处理后的哈希码值得到所述目标字符的目标哈希值。


3.根据权利要求2所述的方法,其特征在于,在基于相加处理后的哈希码值得到所述字符串数据中目标字符的目标哈希值之前,且在将取反后的哈希码值与所述字符串数据中的目标字符进行相加处理,以得到相加处理后的哈希码值之后,还包括:
确定所述字符串数据中是否存在未处理字符;
若存在所述未处理字符,则将所述未处理字符进行哈希处理,以得到所述未处理字符的哈希码值;
若不存在所述未处理字符,则将所述目标字符的哈希码值确定为所述字符串数据的哈希码值。


4.根据权利要求2所述的方法,其特征在于,将所述哈希码初始值向目标方向位移目标位数,以得到移位后的哈希码值,包括:
将所...

【专利技术属性】
技术研发人员:李立亚吴丽张春燕
申请(专利权)人:无锡科技职业学院
类型:发明
国别省市:江苏;32

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

1