哈希算法的实际应用
2021-09-17 本文已影响0人
炒河粉儿
哈希算法的概念
-
哈希算法的原理用一句话来概括:将任意长度的二进制串映射为固定长度的二进制串。这种映射的规则就称为哈希算法。原始数据映射后得到的二进制串就称为哈希值。
-
哈希算法一般要满足以下要求
1.从哈希值不能反向推导出原始数据。因此也称为单向哈希算法。
2.对数据变化敏感,哪怕原始数据只改动一个二进制位,对应的哈希值也大不相同。
3.哈希冲突的概率要小,不同原始数据对应相同哈希值的概率非常小。
4.哈希算法的执行效率要高,对于较长的文本,也能快速计算出哈希值。
哈希值的应用
安全加密
- 加密算法的使用。比如MD5,SHA,DES,AES等。对数据进行加密操作,再和服务起进行传输。同样,用户的密码也使用哈希算法进行加密,避免数据的泄露。
- 字典攻击,维护一个常用的密码字典表,把表中的明文密码用哈希算法计算出哈希值,通过对获取到的数据与表中数据进行比对,可以找到对应的原数据。比如SHA1已经被破解,据说MD5也被破解了。为了能够增加破解难度。我们使用MD5等哈希算法加密密码数据的时候,我们可以采取引入一个盐(salt)的操作,和用户密码组合在一起,增加密码的复杂度,增加密码被破解的难度。
唯一标识
- 可以对数据的多个部分截取,进行哈希算法得到哈希值,用来当作这个数据的唯一标识。可以通过对唯一标识的对比来判断数据是否相同。
数据校验
- 也是通过对数据分片,进行哈希算法,得到哈希值,用哈希值来比对是否相同,校验数据的正确性。
哈希函数
- 哈希表中的哈希函数同样也是哈希算法的应用。不过哈希函数并不关心是否能反向解密。更关心的是执行的效率和是否能使数据平均分布。
负载均衡
- 通过哈希算法,将不同的请求分配到不同的服务器上。将需要放在同一个服务器上的请求都转发到相对应的服务器上。
数据分片
- 利用数据通过哈希算法,获取到哈希值,按照一定的规则,比如求模取余等,将数据分配到对应的机器上。当进行一个数据的查询等操作时,我们就可以快速定位到对应的机器,利用分片处理的思路,突破单机内存或者CPU的资源限制。
分布式存储
- 数据通过哈希算法得到哈希值,然后按照一定的的规则将数据放置在不同的机器中进行存储。同时利用一致性哈希算法,解决新增机器缓存失效的问题。