算法之哈希算法

哈希算法定义

将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法。

哈希算法实现的要求

  • 从哈希出来的值不能反向推导出原始数据。也就是说,哈希算法是单向的。
  • 对原始数据十分敏感,输入数据改变一点,输出的数据就会大不相同。
  • 散列冲突的概率要非常小。
  • 哈希算法的执行效率要十分高。

哈希算法的应用

  1. 安全加密
    安全加密主要利用哈希算法单向的特点。我们可以对要存储的密码进行哈希算法加密,这样就算被攻击且泄漏了数据库数据,那么别人也无法反向推导出密码明文。
  2. 唯一标识
    唯一标识主要利用哈希算法的散列冲突非常小的特点。一般来说,不同数据的哈希值不会相同。因此可以对大数据做数据摘要,通过一个较短的二进制编码来表示一个很大的数据。
  3. 数据校验
    为了防止数据被篡改或是数据不完整,可以对原始数据用哈希算法得出一个哈希值存储起来,在用到原始数据时再对原始数据做哈希,得出的值与之前的哈希值做对比,相同的情况下就说明数据是完整且正确的。数据校验主要利用了哈希算法对原始数据十分敏感的特点。
  4. 应用散列函数
    因为散列函数的要求是执行效率高且散列冲突小。哈希算法也具备了这两个特点。所以哈希算法可用来做散列函数。
  5. 负载均衡
    当我们在实现负载均衡时需要“会话粘滞”时,也就是说,我们需要在同一个客户端上,在一次会话中的所有请求路由到同一个服务器上。
    我们可以通过哈希算法,对客户端IP计算哈希值,将取得的哈希值与服务器列表的大小进行取模运算,最终得到的值就是应该被路由到的服务器编号。这样,我们就可以把同一个IP过来的所有请求都路由到同一个后端服务器上。
  6. 数据分片
  7. 分布式存储

你可能感兴趣的:(《数据结构与算法之美》学习笔记)