哈希算法定义
将任意长度的二进制值串映射成固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。
哈希算法特点
- 单向哈希:从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法)
- 篡改无效:对输入敏感,哪怕原始数据只修改一个Bit,最后得到的哈希值也大不相同
- 散列冲突:散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小
- 执行效率:哈希算法的执行效率要尽量高效,针对较长的文本,也能快速计算哈希值
哈希算法常见应用
7个常见应用:安全加密、唯一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储。
安全加密
常用于加密的哈希算法:
- MD5:MD5 Message-Digest Algorithm,MD5消息摘要算法
- SHA:Secure Hash Algorithm,安全散列算法
- DES:Data Encryption Standard,数据加密标准
- AES:Advanced Encryption Standard,高级加密标准
对用于加密的哈希算法,有两点格外重要,第一点是很难根据哈希值反向推导出原始数据,第二点是散列冲突的概率要小
在实际开发中要权衡破解难度和计算时间来决定究竟使用哪种加密算法
唯一标识
通过哈希算法计算出数据的唯一标识,从而用于高效检索数据。
数据校验
利用哈希算法对输入数据敏感的特点,可以对数据取哈希值,从而高效校验数据是否被篡改过。
散列函数
散列函数中用到的哈希算法更加关注散列后的值能不能平均分布,以及散列函数的执行快慢。
《数据结构与算法之美》 -- 王争