安全加密(一)散列算法

208 阅读1分钟

散列算法又称散列函数、哈希函数(Hash Function),将任意长度的输入通过算法转换成固定长度的输出,输出值成为散列值,通常为字母和数字组合。

特点

  • 确定性:如果两个散列值是不同的,那么这两个散列值的原始输入也是不同的。
  • 散列碰撞(collision):输入和输出不是唯一对应关系,如果两个散列值相同,两个输入值可能是相同的,也可能不相同。
  • 不可逆性:一个散列值对应无数个明文,理论上不知道是哪个。
  • 混淆特性:输入一些数据计算出散列值,然后改变输入值中部分,一个具有强混淆特性的散列函数针对已改变的输入值会计算产生出一个完全不同的散列值。

常见散列算法

算法名称输出位数(bits)内部大小区块大小长度大小字符尺寸碰撞情形
HAVAL256/224/192/160/12825610246432
MD2128384128No8大多数
MD41281285126432
MD51281285126432
SHA-01601605126432
SHA-11601605126432有缺陷
SHA-256/224256/2242565126432
SHA-512/384512/384512102412864