定义

任意长度的二进制串映射为固定长度的二进制串,这个映射的规则就是哈希算法。一般一个好的哈希算法会有一个活着多个以下特征。

  1. 从哈希值不能反向推导出原始数据
  2. 对输入数据非常敏感,哪怕原始数据只修改课一个 Bit,最后得到的哈希值也大不相同
  3. 散列冲突的概率要很小,对于不同的原始数据,哈希值的概率非常小
  4. 哈希算法的执行效率需要非常高效,针对较长的文本,也能计算出哈希值

应用

  1. 安全加密,比如 MD5SHADESAES
  2. 唯一标识,比如把图片把二进制信息的开头 300 位、中间 300 位、结尾 300 位,加上图片的图库路径信息放在一起,通过哈希算法(比如 MD5),得到一个哈希字符串。来搜索某一个图片是否在图库中。
  3. 数据校验,在 BT 下载中,把下载后的内容进行 hash求值,然后和种子中的 hash 值做比对,看是否在下载过程中出现问题。
  4. 散列函数
  5. 负载均衡
  6. 数据分片
  7. 分布式存储
  8. git commit id