20_单向散列函数

基本概念
  • 单向散列函数,又称哈希函数/消息摘要函数/杂凑函数。
  • 输出的散列值也被称为消息摘要(Message Diges,MD)/指纹(Fingerprint)
  • 输入的消息又称原像(pre-image)
单向散列函数的特点
  • 计算速度快,能快速计算出散列值
  • 散列值的长度和消息的长度无关,根据任意长度的消息,计算出固定长度的散列值
  • 消息不同,散列值也不同
  • 具备单向性,无法通过散列值反推出消息的性质

补充一个概念:

抗碰撞性

无法随机找到两条不同的消息,使得他们的散列值相同

  • 弱抗碰撞性:给定某个散列值,找到具有相同散列值的另一条消息非常困难
  • 强抗碰撞性:找到散列值相同的两条的不同消息非常困难

单项散列函数必须同时具备这两者特征,常用来表示这个单项散列函数目前是否安全。

常见的几种单向散列函数
  • MD4、MD5
    产生128bit的散列值,MD就是Message Digest的缩写,目前强抗碰撞性已被攻破,已经不安全。
    Mac终端上默认可以使用md5命令。

  • SHA-1
    产生160bit的散列值,目前强抗碰撞性已被攻破,已经不安全。

  • SHA-2
    SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit。目前尚未被攻破。

  • SHA-3
    区别于SHA-1,SHA-2的全新标准全新标准。

  • RIPEMD-160
    RIPEMD-160是欧盟所设计的RIPEMD的修订版,散列值为160比特。RIPEMD已经被攻破,RIPEMD-160还未被攻破。

用途
  • 用来解决判断发送的数据是否被篡改。无法解决伪装性!(是否是某人发的)。


    Snip20200918_34.png
  • 口令加密:最简单的场景就是服务器存储口令的散列值(口令可以理解为日常用的密码),只有用户输入的时候是密文,后面全部以散列值处理存储。


    Snip20200918_35.png
  • 数字签名

你可能感兴趣的:(20_单向散列函数)