6-4 Hash哈希算法
哈希算法Hash
Hsah函数,又称为杂凑函数、散列函数,它能够将任意长度的信息转换成固定长度的哈希值(数字摘要),并且任意不同消息或文件所生成的哈希值是不一样的。
h表示hash函数,则h满足下列条件:
- h的输入可以是任意长度的消息或文件M。
- h的输出的长度是固定的。
- 给定h和M,计算h(M)是容易的。
- 给定h的描述,找两个不同的消息M1和M2,使得h(M1)=h_(M2)是计算上不可行的。
哈希函数特性:不可逆性(单向)、无碰撞性、雪崩效应
哈希分类
常见的Hash算法有:
- MD5算法:以512位数据块为单位来处理输入,产生128位的信息摘要。常用于文件校验。
- SHA算法:以512位数据块为单位来处理输入,产生160位的哈希值,比MD5更安全。
- SM3国产算法:消息分组长度为512比特,输出 256位 摘要。
HASH应用
文件完整性校验

账号密码存储
- 明文存储,无安全防护

- 哈希存储(Rainbow Table Attack,彩虹表攻击)

- (盐+哈希)存储(彩虹表攻击失效):盐可以是用户注册时间或者生成的随机数

用户身份认证
典型的应用是在PPPoE中使用的用户认证:
- 增加一个随机数R做哈希HMAC = Hash(密码+R)
- 需要双方预先知道这个R
- MAC:消除中间人攻击源认证(避免密码直接传输)+完整性校验

客户端需要到PPPoE的服务端进行验证,首先客户端发起认证,服务端查询数据库,发现数据库中有张三用户,返回随机数R,客户端将张三的密码123结合随机数R进行哈希后返回给服务端,服务端同样将张三的密码123结合随机数R进行哈希后比对。如果相等,说明用户张三知道正确密码;如果不相等,说明客户端不知道用户密码。如此能够消除中间人攻击源认证+完整性校验
例题
例题1

解析:PGP不是一种完全的非对称加密体系,它是个混合加密算法,它是由对称加密算法(IDEA)、非对称加密算法(RSA)、单向散列算法(MD5)组成,其中MD5验证报文完整性。
例题2

解析:记忆常见哈希算法输出
例题3

例题4
