1.散列函数定义
散列函数(哈希函数)是一种将输入数据(消息)转换为固定大小的输出(散列值)的算法。散列函数具有以下特点:
1. 固定输出长度:散列函数生成的散列值具有固定的输出长度,不论输入数据的长度如何,散列值的长度始终保持不变。
2. 高度离散性:散列函数应该尽可能地将不同的输入映射到不同的输出,且对于输入的微小变化,散列值应有较大的变化。
3. 单向性:散列函数是单向的,从散列值推导原始输入数据应当非常困难,理想状态下应该是不可逆的。
4. 抗碰撞性:散列函数应该对于不同的输入,产生冲突(碰撞)的概率非常低,即不同的输入不应该产生相同的散列值。
常见的散列函数有许多,应用领域广泛。以下是一些常用的散列函数:
1. MD5:输出长度为 128 位,已被认为不够安全,现多用于校验文件完整性等场景。
2. SHA-1:输出长度为 160 位,也已被认为不够安全,在一些应用领域中正在逐渐被淘汰。
3. SHA-256、SHA-384、SHA-512:输出长度分别为 256、384、512 位,较为常用,安全性较高,广泛应用于密码学领域。
4. HMAC