Hash函数MD5 .MD5 ■MD4是MD5杂凑算法的前身,由Ron Rivest-于1990年10月作为 RFC(Request For Comments)提出。 ■该算法的设计没有基于任何假设和密码体制。Hash函数的这种 直接构造方法因其运算速度快、非常实用等特点受到了人们的 广泛青睐。但后来人们发现MD4存在安全性缺陷。 ■1992年4月公布的MD4的改进(RFC1320,1321)称为MD5
MD5 MD4是MD5杂凑算法的前身,由Ron Rivest于1990年10月作为 RFC(Request For Comments)提出。 该算法的设计没有基于任何假设和密码体制。Hash函数的这种 直接构造方法因其运算速度快、非常实用等特点受到了人们的 广泛青睐。但后来人们发现MD4存在安全性缺陷。 1992年4月公布的MD4的改进(RFC 1320,1321)称为MD5。 Hash函数MD5
算法描述 。MD5 ■MD5算法采用迭代型哈希函数的一般结构。 ■输入:任意长的消息(图中为K比特) ■分组:512比特 ■输出:128比特的消息摘要
算法描述 MD5 MD5算法采用迭代型哈希函数的一般结构。 输入:任意长的消息(图中为K比特) 分组:512比特 输出:128比特的消息摘要 算法描述
算法描述 填充 消息长度 (1到512bi0 (K mod 24) L×512bit=N×32bit Kbit 消息 100..0 512bit 512bit 512bit 512bit 11o 1 ma L-1 512 512 512 512 128 128 128 128 CVo HMDS CV HMDS CVa HMD5 C'z-1 HMDS5 MD5的算法框图 128bit Hash值
算法描述 MD5的算法框图
算法描述 。处理过程 ①填充消息:对消息填充,使得其比特长在模512下为448,即 填充后消息的长度为512的某一倍数减64,留出的64比特备第2 步使用。 步骤①是必需的,即使消息长度已满足要求,仍需填充。例如 消息长为448比特,则需填充512比特,使其长度变为960,因此 填充的比特数大于等于1而小于等于512。 填充方式是:第1位为1,其后各位皆为0
处理过程 ①填充消息:对消息填充,使得其比特长在模512下为448,即 填充后消息的长度为512的某一倍数减64,留出的64比特备第2 步使用。 步骤①是必需的,即使消息长度已满足要求,仍需填充。例如, 消息长为448比特,则需填充512比特,使其长度变为960,因此 填充的比特数大于等于1而小于等于512。 填充方式是: 第1位为1,其后各位皆为0。 算法描述
算法描述 ②填充长度:用留出的64比特以.little-endian方式来表示消息被 填充前的长度。如果消息长度大于24,则以24为模数取模。 ■Little-endian将最低有效字节存于低地址字节,相反的存储方式 称为big-endian方式。 ■消息的长度为512的倍数(设为L倍)、消息分mo,m1,,mL-1 ■每一分组为16个32比特长的字 ■消息中的总字数为N=L×16 ■消息按字表示为MI0,,N-1
②填充长度:用留出的64比特以little-endian方式来表示消息被 填充前的长度。如果消息长度大于2 64 ,则以2 64为模数取模。 Little-endian将最低有效字节存于低地址字节,相反的存储方式 称为big-endian方式。 消息的长度为512的倍数(设为L倍)、消息分m0,m1,…,mL-1 每一分组为16个32比特长的字 消息中的总字数为N=L×16 消息按字表示为M[0,…,N-1] 算法描述