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