002-数据结构与算法-哈希算法

什么是哈希算法

哈希算法就是能将任意长度的二进制值映射为固定长度的二进制值(哈希值)的规则。

一个优秀的哈希算法应该满足的条件:

  • 单向。从哈希值不能反向推算出原始数据。
  • 随机。原始数据哪怕只修改了一个Bit,哈希值也大不相同。
  • 高效。即使是很长的文本,也能在快速得到结果。
  • 平均。不同原始数据得到的哈希值均匀分布,避免散列冲突。

常见的哈希算法有MD5、SHA,不过MD5由于已经可以被暴力破解,所以现在常用的是SHA算法。

哈希算法的应用场景

数据加密

对密码、身份证、手机号等信息进行加密后,保存到数据库,防止数据库被攻击时泄露数据。

唯一标识

对文件、图片的二进制数据进行转换,得到的哈希值作为唯一标识,判断两个文件是否相同,或者在下载后验证文件是否有缺失。

数据校验

两个系统之间传输数据时,发送方可以同时发送数据报文以及报文对应的哈希值,接收方根据收到的数据再次做哈希运算,校验与发送方的是否一致,如果不一致则说明数据有缺失或者被篡改。

散列函数

散列表的散列函数就是基于哈希算法实现的。

负载均衡

对请求IP进行哈希,然后取模映射到后端不同的服务器上。

数据分片/分布式存储

与负载均衡同理,对某个关键字(例如ID)进行哈希,然后取模映射到不同的数据库实例/机器上。

上篇002-数据结构与算法-树
下篇002-数据结构与算法-常见排序算法