定义
任意长度的二进制串映射为固定长度的二进制串,这个映射的规则就是哈希算法。一般一个好的哈希算法会有一个活着多个以下特征。
- 从哈希值不能反向推导出原始数据
- 对输入数据非常敏感,哪怕原始数据只修改课一个 Bit,最后得到的哈希值也大不相同
- 散列冲突的概率要很小,对于不同的原始数据,哈希值的概率非常小
- 哈希算法的执行效率需要非常高效,针对较长的文本,也能计算出哈希值
应用
- 安全加密,比如 MD5、SHA、DES、AES,
- 唯一标识,比如把图片把二进制信息的开头 300 位、中间 300 位、结尾 300 位,加上图片的图库路径信息放在一起,通过哈希算法(比如 MD5),得到一个哈希字符串。来搜索某一个图片是否在图库中。
- 数据校验,在 BT 下载中,把下载后的内容进行 hash求值,然后和种子中的 hash 值做比对,看是否在下载过程中出现问题。
- 散列函数
- 负载均衡
- 数据分片
- 分布式存储
- git commit id