概念
将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是 哈希算法。
通过原始数据映射之后得到的二进制值串就是 哈希值。
要求
- 从哈希值不能反向推导出原始数据
- 对输入数据非常敏感,一个 Bit 修改得到的哈希值也大不相同
- 散列冲突的概率要很小
- 执行效率高效
常见应用
安全加密、唯一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储。
后三个应用均与分布式系统有关。
下面逐个进行解释。
1 安全加密
常用:
- MD5 (MD5 Message-Digest Algorithm , MD5 消息摘要算法)
- SHA (Secure HashAlgorithm ,安全散列算法)
其他:
- DES ( Data Encryption Standard ,数据加密标准)
- AES ( Advanced Encryption Standard ,高级加密标准)
哈希算法在安全加密方面有两点特别重要:
- 很难反向推到
- 散列冲突概率小
以MD5为例,哈希值是固定的128 位二进制串,最多能表示 2^128 个数据。当我们对2^128+1个数据求哈希值时,必然会存在至少两个哈希值是相同的。
尽管如此,想要破解的难度依然非常高。