YuLimin 发表于 2013-2-4 23:11:01

MD5加密算法简介

MD5加密算法简介
一、算法实现
1、MD5算法是对输入的数据进行补位,使得如果数据位长度LEN对512求余的结果
是448。
   即数据扩展至K*512+448位。即K*64+56个字节,K为整数。
   具体补位操作:补一个1,然后补0至满足上述要求  
2、补数据长度:
   用一个64位的数字表示数据的原始长度B,把B用两个32位数表示。这时,数据
就被填
   补成长度为512位的倍数。
3. 初始化MD5参数  
   四个32位整数 (A,B,C,D) 用来计算信息摘要,初始化使用的是十六进制表示
的数字
      A=0X01234567
      B=0X89abcdef
      C=0Xfedcba98
      D=0X76543210  
4、处理位操作函数  
      X,Y,Z为32位整数。
      F(X,Y,Z) = X&Y|NOT(X)&Z
      G(X,Y,Z) = X&Z|Y¬(Z)
      H(X,Y,Z) = X xor Y xor Z
      I(X,Y,Z) = Y xor (X|not(Z))  
5、主要变换过程:
   使用常数组T, T为32位整数用16进制表示,数据用16个32位的

   数数组M[]表示。
   具体过程如下:  
/* 处理数据原文 */
For i = 0 to N/16-1 do  
/*每一次,把数据原文存放在16个元素的数组X中. */
For j = 0 to 15 do
Set X to M.
end  /结束对J的循环
/* Save A as AA, B as BB, C as CC, and D as DD. */
AA = A
BB = B
CC = C
DD = D  
/* 第1轮*/
/* 以 表示如下操作
a = b + ((a + F(b,c,d) + X + T) <<< s). */
/* Do the following 16 operations. */



  
/* 第2轮* */
/* 以 表示如下操作
a = b + ((a + G(b,c,d) + X + T) <<< s). */
/* Do the following 16 operations. */



  
/* 第3轮*/
/* 以 表示如下操作
a = b + ((a + H(b,c,d) + X + T) <<< s). */
/* Do the following 16 operations. */



  
/* 第4轮*/
/* 以 表示如下操作
a = b + ((a + I(b,c,d) + X + T) <<< s). */
/* Do the following 16 operations. */



  
/* 然后进行如下操作 */
A = A + AA
B = B + BB
C = C + CC
D = D + DD  
end /* 结束对I的循环*/
6、输出结果。
页: [1]
查看完整版本: MD5加密算法简介