彻底搞懂HTTPS(3)——什么是哈希函数?

什么是Hash函数

在这里插入图片描述

  1. 单向
    原始消息可以通过Hash函数得到数字指纹,但是反推是不成立的。
  2. 压缩
    原始消息很长,可以将大的消息压缩成小的消息。
  3. 定长
    通过Hash函数得到的结果都是512位的比特串
  4. 碰撞/冲突
    两个不一样的消息,通过Hash函数得到的Hash值是一样的,此时就产生了碰撞。碰撞是不可避免的,我们要做的是尽可能减少碰撞情况的发生。
  5. 高灵敏
    类似于“四两拨千斤”,“蝴蝶效应”的现象,原始值改动一点点,Hash值会产生翻天覆地的变化。

Hash函数的用途

在这里插入图片描述

  • 完整性检测
    可以通过校验的办法来校验文件是否是原来的文件,文件是否被修改过。Hash函数加上key可以放数据篡改。
  • 登录验证,校对密码
    在登录网站的过程中,用户名的密码是不能直接存在数据库的,不能以明文的形式进行存储。在做Hash函数操作的时候加salt,数据库中存储密码加salt之后的Hash值和salt的值,加了一层的保障。Hash算法是很快的加密算法。加密算法的快慢排序:Hash > 对称加密 > 非对称加密。
    在这里插入图片描述

常见的Hash算法

在这里插入图片描述

MD5和SHA-1已经被证明不安全,现在用的比较多的是SHA-2。

MAC和HMAC

MAC(MessageAuthCode)消息验证码。是为了检查传输的消息有无损坏和篡改。
HMAC(Hash based MAC)基于Hash的消息验证码。
在这里插入图片描述
TLS 1.3之前是先计算MAC在进行Encrpt,TLS 1.3之后是可以进行自定义的。
在这里插入图片描述

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页