求助各路大神,md5 中数据的处理过程不明白
md5以小端存储(ABCD——>DCBA(存储的数)),可是做运算的时候是前面的那个数?还有就是将DCBA放入预留位置,如果输出的话就是DCBA(为什么?),可是它与另一个数做加法运算(1234——>4321(存储的数)结果就是ABCD+4321,不应该是ABCD+1234的值吗?那么得到md5的值错了?谢谢!如下程序:
#include<stdio.h>//计算机如何进行计算!
main()
{ void word(unsigned long *ptr);
unsigned char a[4]={0x00,0x00,0xff,0x00};
unsigned char b[4]={0x00,0x00,0x1,0x00};
unsigned long tmp1=0x00000000,tmp2=0x00000000;
int i;
unsigned char *ptmp=a; unsigned char *pt=b;
for(i=0;i<4;i++)
{ tmp1>>=8;
tmp1+=*ptmp<<24;
ptmp++; } //0x00ff0000[/color]
for(i=0;i<4;i++)
{ tmp2>>=8;
tmp2+=*pt<<24;
pt++; } //0x010000[/color]
printf("%08lx\n",tmp1+tmp2);
}
计算结果为0x01000000 为什么不是0x0000ff00+0x00000100=0x00010000