目录
2.SHA-1、SHA-256、SHA-384、SHA-512
1.概念:
单向散列函数有一个输入和一个输出,其中输入的称为消息,输出的称为散列值。单项散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。
2.特点:
1.根据任意长度的消息计算出固定长度的散列值:
首先,单项散列函数的输入必须是任意长度的消息。其次,无论输入多长的消息,单项散列函数必须能够生成长度较短且固定的散列值。
2.能够快速计算出散列值
3.消息不同散列值也不同:
为了能够确认完整性,消息中哪怕只有1比特的改变,也必须有很高的概率产生不同的散列值
4.单向性:
无法通过散列值反算出消息
提醒:尽管单向散列函数所产生的散列值是和原来的消息完全不同的比特序列,但是单项散列函数并不是一种加密,因此无法通过解密将散列值还原位原来的消息
3.专有名词
1.碰撞:两个不同的消息产生同一个散列值的情况称为碰撞
2.抗碰撞性:难以发生碰撞的性质
3.弱抗碰撞性:要找到和该消息具有相同的散列值的另一条消息是非常困难的,这一性质称为弱抗碰撞性
4.强抗碰撞性:要找到散列值相同的两条消息是非常困难的,在这里,散列值可以是任意值
(密码技术中使用的单向散列函数,不仅要具备弱抗碰撞性,还必须具备强抗碰撞性)
5.单向散列函数也称为消息摘要函数、哈希函数或者杂凑函数,输入单向散列函数的消息也称为原像,输出的散列值也称为消息摘要或者指纹
4.单向散列函数的实际应用
1.检查软件是否被篡改
很多软件,都会把通过单向散列函数计算出的散列值公布在自己的官方网站上,用户下载完之后,可以自行计算散列值,然后与官方网站上公布的散列值进行比对,进而判断软件是否被篡改
2.基于口令的加密(PBE)
3.消息认证码
消息认证码是将“发送者和接收者之间的共享密钥”和“消息”进行混合后计算出的散列值