代码不变,为何每次编译,exe文件总不同

上海程序员3 2010-10-18 03:31:47
想知道原因和原理。
...全文
466 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcty520 2010-10-18
  • 打赏
  • 举报
回复
编译的时候MD5值,还跟每次编译时候的时间、环境版本等按一定内置规则有关系的。
wuyq11 2010-10-18
  • 打赏
  • 举报
回复
每次编译,都会有相关信息的变化如时间等属性
http://msdn.microsoft.com/zh-cn/library/k5532s8a.aspx
jeansy911 2010-10-18
  • 打赏
  • 举报
回复
如果你有兴趣请参看
pe文件:http://baike.baidu.com/view/1087038.html?wtp=tt
如果还有兴趣请下载一个
pe文件查看器,研究下你编译生成的同一个exe文件,看看到底是那个地址不同,我认为你点下F5键开始编译的时刻(DateTimeStamp)应该是影响MD5值产生的一个参;另外你用不同版本的.net framework编译你的源代码试一试。。
ZengHD 2010-10-18
  • 打赏
  • 举报
回复
编译出来的EXE不同了,可能里面加了编译时间之类的内容了
这个应该看编译原理而不是看MD5原理
上海程序员3 2010-10-18
  • 打赏
  • 举报
回复
我感觉是每次编译出现的exe文件中有部分内容变了,是exe本身有所不同,所以exe文件的md5结果才不同。

另外md5和日期没有关系的。md5并不是随机算法。
jeansy911 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mowanglijiang 的回复:]

相同内容,md5值加密结果肯定是不变的,md5加密算法的原理我知道。
[/Quote]

编译的过程你是看不到的(有中间语言。。MD5的值计算有一个处决于你该次编译的日期datetime,有兴趣看看反编译。。。),那么结果就不会相同。
dai821 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jeansy911 的回复:]
这是必然的。。。。。百度一下:md5加密算法
[/Quote]



就是这样的,因为加密算法
rainsnowclowd 2010-10-18
  • 打赏
  • 举报
回复
我記得在什麽地方看過,md5每次产生都会不同,是唯一的,你每次编译虽然看似同一个文件,可是它已经变了,被别的替换了,所以其md5也应该跟着一起替换了。 要不你把之前的文件拷贝走,在编译一个,比较下两个文件的md5是不是不一样了。
上海程序员3 2010-10-18
  • 打赏
  • 举报
回复
相同内容,md5值加密结果肯定是不变的,md5加密算法的原理我知道。
jeansy911 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mowanglijiang 的回复:]

md5值总是不同
[/Quote]

这是必然的。。。。。百度一下:md5加密算法
上海程序员3 2010-10-18
  • 打赏
  • 举报
回复
md5值总是不同
ireenter 2010-10-18
  • 打赏
  • 举报
回复
什么不同了?

111,076

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧