哈希算法的实际应用

哈希算法的概念

  • 哈希算法的原理用一句话来概括:将任意长度的二进制串映射为固定长度的二进制串。这种映射的规则就称为哈希算法。原始数据映射后得到的二进制串就称为哈希值。

  • 哈希算法一般要满足以下要求

    1.从哈希值不能反向推导出原始数据。因此也称为单向哈希算法。

    2.对数据变化敏感,哪怕原始数据只改动一个二进制位,对应的哈希值也大不相同。

    3.哈希冲突的概率要小,不同原始数据对应相同哈希值的概率非常小。

    4.哈希算法的执行效率要高,对于较长的文本,也能快速计算出哈希值。

哈希值的应用

安全加密

  • 加密算法的使用。比如MD5,SHA,DES,AES等。对数据进行加密操作,再和服务起进行传输。同样,用户的密码也使用哈希算法进行加密,避免数据的泄露。
  • 字典攻击,维护一个常用的密码字典表,把表中的明文密码用哈希算法计算出哈希值,通过对获取到的数据与表中数据进行比对,可以找到对应的原数据。比如SHA1已经被破解,据说MD5也被破解了。为了能够增加破解难度。我们使用MD5等哈希算法加密密码数据的时候,我们可以采取引入一个盐(salt)的操作,和用户密码组合在一起,增加密码的复杂度,增加密码被破解的难度。

唯一标识

  • 可以对数据的多个部分截取,进行哈希算法得到哈希值,用来当作这个数据的唯一标识。可以通过对唯一标识的对比来判断数据是否相同。

数据校验

  • 也是通过对数据分片,进行哈希算法,得到哈希值,用哈希值来比对是否相同,校验数据的正确性。

哈希函数

  • 哈希表中的哈希函数同样也是哈希算法的应用。不过哈希函数并不关心是否能反向解密。更关心的是执行的效率和是否能使数据平均分布。

负载均衡

  • 通过哈希算法,将不同的请求分配到不同的服务器上。将需要放在同一个服务器上的请求都转发到相对应的服务器上。

数据分片

  • 利用数据通过哈希算法,获取到哈希值,按照一定的规则,比如求模取余等,将数据分配到对应的机器上。当进行一个数据的查询等操作时,我们就可以快速定位到对应的机器,利用分片处理的思路,突破单机内存或者CPU的资源限制。

分布式存储

  • 数据通过哈希算法得到哈希值,然后按照一定的的规则将数据放置在不同的机器中进行存储。同时利用一致性哈希算法,解决新增机器缓存失效的问题。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容