散列函数:也称作哈希函数,消息摘要函数,单向函数或杂凑函数。散列函数的作用不是完成数据的加密和解密,而是用于验证数据的完整性。散列值通常是一个短的随机字母和数字组成的字符串。
上述流程中收发双方通信前已经协商了具体的散列算法,并且该算法是公开的,如果消息在传递过程中被篡改,则不能以已获得的数字指纹相匹配。
散列函数的特性:
1、消息长度不受限制
2、对于给定的消息,其散列值的计算很容易
3、如果两个散列值不同,则这两个散列值的原始输入消息也不同。
4、散列函数的运算是不可逆的
5、对于一个一直的消息和其散列值,要找到另一个消息使其获得相同的散列值是不可能的
6、任意两个不同消息的散列值一定不同
散列函数的常用算法有:
MD:消息摘要算法
SHA:安全散列算法
MAC:消息认证码算法
数字签名:通过散列函数确保数据内容的完整性并不够,还需要确保数据来源的可认证(鉴别)性和不可否认性。完整性、认证性、不可否认性正是数字签名的主要特征。