1. 32、64位系统生成的MD5编码一样吗
不一样 ,也可以一样 取决于你的程序设计是不是完美的。
就是在用64位的编译器的时候。把头文件里面的LONG型改成int型。然后重新编译后。md5加密出来的结果。就和32位编译器编译后的处理结果一致了。。
这个问题终于解决了。
可能原理是:
64位的int 和 32位的long一样长,
64位的long就更加长了。
最好是定义成 int32_t 型,这样不管是在什么平台上,在32位还是64位机上,都能得到正确的结果。
一般情况下是这样的:
32位系统上,sizeof(int) == sizeof(long) == 4, sizeof(long long) == 2 * sizeof(int);
64位系统上,sizeof(int) == 4, sizeof(long) == sizeof(long long) == 2 * sizeof(int);
2. 为什么同样的文件我拷过来后MD5码验证就不对
如果文件没变,你采用的MD5验证程序又一样的话,码应该一样的。但你的Md5码改变的话,那肯定说明文件有修改。你说文件没有被修改,大小仍然不变,这应该不可能,我也不明白怎么回事,可能是与你的硬盘分区有关?
3. 为什么每次编译之后计算MD5都不相同
建议你学习一下PE文件(通常的exe可执行文件就是一种PE文件)结构 其中由一个时间日期段 记录了PE文件被创建的时间 每一次编译的时间不同 因此此段的内容也不同 因此最终生成的文件内容有差异 继而md5码有异 附: PE部分结构C语言描述: typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp;//这里就是时间日期戳了 是链接器产生的时间 DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; 下图在一个具体的可知性文件中标示了此段的位置:
4. 编译的LEDE固件的内核MD5码不一样怎么办
就算源码一样 .config文件和官方编译用的不同,md5还是不同,虽然可以强制指定,但上次试过安装官方源上的一些内核模块,虽然可以安装,但内核日志中有出错的trace,放弃
5. ubuntu下链接c语言实现md5出错
你的命令写得有问题:
gcc -o main.o md5.o
-o参数用来指定输出文件名,你这里把main.o传给它了,试试:
gcc -o app main.o md5.o
其实你可以直接一步完成:
gcc md5.c main.c -o main
6. 为什么一个文件用MD5算出来的MD5码每次都不一样
可能是文件问题,文件不断在更新。
MD5计算器问题,推荐用winMd5Sum和
HashMyFiles。
7. 文件MD5不一致是什么意思
两个文件的MD5值不同说明将文件不是相同文件,一般用来检测文件是否被篡改,或下载的文件是否与原文件是同一文件