单向散列函数(不是加密):输入称为消息,输出称为散列值。可根据消息的比特序列计算出固定长度的散列值。
单向散列函数的性质:
- 根据任意长度的消息计算出固定长度的散列值
- 能够快速计算出散列值
- 消息不同散列值也不同
两个不同的消息产生同一个散列值的情况称为碰撞
弱碰撞性:找到和该条消息具有相同散列值的另外一条消息是非常困难的;
强碰撞性:找到散列值相同的两条消息是非常困难的。 - 具备单向性
单向性:无法通过散列值反算出消息的性质。
单向散列函数的实际应用:
- 检测软件是否被篡改
- 基于口令的加密PBE
- 消息认证码
- 数字签名
- 伪随机数生成器
- 一次性口令