K:hash的应用场景

本博文主要用于讲解Hash的应用场景

Hash主要应用于数据结构中和密码学中。

用于数据结构时,主要是为了提高查询的效率,这就对速度比较重视,对抗碰撞不太看中,只要保证hash均匀分布就可以。

在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。

1. 数据结构

使用Hash的数据结构叫做散列表,主要是为了提高查询的效率。也有直接译作哈希表,也叫Hash表,

Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。

2.密码学

在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。

举个用于消息摘要例子,银行的数据库中是不能保存用户密码的原文的,只能保存密码的hash值。在这种应用场景里,对于抗碰撞和抗篡改能力要求极高,对速度的要求在其次。一个设计良好的hash算法,其抗碰撞能力是很高的。

需要注意的是,hash算法在密码学中,主要用于信息的摘要和完整性校验,而不是加密。

概括来说,哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。

回到目录|·(工)·)

参考自:Hash的概念及应用

转载于:https://www.cnblogs.com/MyStringIsNotNull/p/9109109.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MurmurHash3有多个版本和实现方法,这里简单介绍一种较为简单的实现方法。 伪代码如下: ``` function MurmurHash3(key, seed): c1 = 0x87c37b91 c2 = 0x4cf5ad43 r1 = 15 r2 = 13 m = 5 n = 0xe6546b64 hash = seed for each 4-byte chunk of key: k = chunk k *= c1 k = (k << r1) | (k >> (32 - r1)) k *= c2 hash ^= k hash = (hash << r2) | (hash >> (32 - r2)) hash = hash * m + n remaining = last 4-byte chunk of key (padded with zeros if necessary) k = remaining k *= c1 k = (k << r1) | (k >> (32 - r1)) k *= c2 hash ^= k hash ^= length of key hash ^= (hash >> 16) hash *= 0x85ebca6b hash ^= (hash >> 13) hash *= 0xc2b2ae35 hash ^= (hash >> 16) return hash ``` 其中,`key`为输入数据,`seed`为哈希种子,`c1`和`c2`为常数,`r1`和`r2`为位移量,`m`和`n`为混合常数。 具体的实现方法包括: 1. 初始化哈希值为种子值。 2. 对输入数据进行分块处理,每块大小为4字节。对每个块进行以下处理: a. 乘以常数`c1`。 b. 按位左移`r1`位或右移`32-r1`位。 c. 乘以常数`c2`。 d. 对哈希值进行按位异或操作。 e. 按位左移`r2`位或右移`32-r2`位。 f. 乘以常数`m`,加上常数`n`,累加到哈希值中。 3. 对最后不足4字节的块进行处理,方法同上。 4. 对哈希值进行一些后处理,包括按位异或、按位左移、按位右移、乘以常数等操作,以保证最终的哈希值具有高质量和低冲突率。 需要注意的是,MurmurHash3的实现方法和参数可以根据具体的应用场景进行调整,以达到更好的性能和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值