Hash函数


Hash函数

MD5

基本描述

MD5 的输入输出如下

  • 输入:任意长的消息,512 比特长的分组。
  • 输出:128 比特的消息摘要。

MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

总体流程如下图所示,每次的运算都由前一轮的128位结果值和当前的512bit值进行运算 。

其底层实现较为复杂(sigh)

此外,有时候我们获得到的 md5 是 16 位的,其实那 16 位是 32 位 md5 的长度,是从 32 位 md5 值来的。是将 32 位 md5 去掉前八位,去掉后八位得到的。

一般来说,我们可以通过函数的初始化来判断是不是 MD5 函数。一般来说,如果一个函数有如下四个初始化的变量,可以猜测该函数为 MD5 函数,因为这是 MD5 函数的初始化 IV。

0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476

破解

目前可以说 md5 已经基本被攻破了,一般的 MD5 的碰撞都可以在如下网上获取到


文章作者: Phoenix
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Phoenix !
  目录