步骤3:设置链接变量,MD5算法中有四个32位的整数参数,它们分别为:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。
步骤4:初始化缓存,MD5算法使用一个4字(128位,每个字32位)的缓存来计算消息摘要,它们主要用来存放MD5的中间结果。缓存可以看成是四个32位的寄存器(初始时a=A,b=B,c=C,d=D)。
步骤5:以512位分组处理消息,这一步是MD5算法的主循环,共四轮,每轮循环都很相似,均进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得的结果加上一个变量,文本的一个子分组和一个常数,再将所得的结果向左环移一个不定的数,并加上a、b、c或d中之一,最后用该结果取代a、b、c或d中之一。
步骤6:当一组512位数据完成步骤5之后,将A、B、C、D分别加上a、b、c、d。然后用下一组512位数据继续进行算法,最后输出A、B、C和D的级联即为最终结果。