| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 475 人关注过本帖
标题:求助各路大神,md5 中数据的处理过程不明白
只看楼主 加入收藏
你好达西0601
Rank: 1
来 自:山东
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-6-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
求助各路大神,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
搜索更多相关主题的帖子: include 计算机 如何 
2014-06-17 18:10
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
没明白你意思。

你上面已经用红色标出了是 0x00ff 0000  了,怎么下面加法反而用 0x0000 ff00 计算呢


[fly]存在即是合理[/fly]
2014-06-17 18:24
你好达西0601
Rank: 1
来 自:山东
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-6-17
收藏
得分:0 
回复 2 楼 azzbcc
就是有关md5中那个低有效位存储的处理问题,没有明白!

有些问题没有为什么,就如同松鼠过马路,它愿意它喜欢。。。
2014-06-17 22:51
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
能力不足,帮不了你。。。


[fly]存在即是合理[/fly]
2014-06-17 23:21
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:5 
这数据处理完之后进行运算,之后不需要再处理回去?

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-06-18 10:15
你好达西0601
Rank: 1
来 自:山东
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-6-17
收藏
得分:0 
回复 5 楼 so_love
不知道你有没有接触过MD5 这里只是最后输出再以相反的顺序输出,可是处理过程中明明是另外一个数 在做运算,程序就是这么设计的,反正是现在我还没有弄明白!

有些问题没有为什么,就如同松鼠过马路,它愿意它喜欢。。。
2014-06-18 18:03
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
你的代码就是这么写的呀
for(i=0;i<4;i++)
{ tmp1>>=8;
tmp1+=*ptmp<<24;
ptmp++; } //是0x00ff0000很正常

总有那身价贱的人给作业贴回复完整的代码
2014-06-18 20:20
你好达西0601
Rank: 1
来 自:山东
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-6-17
收藏
得分:0 
回复 7 楼 embed_xuel
现在明白了,式算法的要求,就是用变化之后的数处理,谢谢!

有些问题没有为什么,就如同松鼠过马路,它愿意它喜欢。。。
2014-06-22 11:51
快速回复:求助各路大神,md5 中数据的处理过程不明白
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021854 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved