社区
C#
帖子详情
谁来解释一下,为什么相同的代码,每次编译所得的exe,它们的MD5校验值,都不一样?
startququ
2012-04-25 09:18:43
代码没有经过任何改动,然后编译N次,得N个exe,但是这N个exe,他们的MD5值,都不一样,为什么?
...全文
874
27
打赏
收藏
谁来解释一下,为什么相同的代码,每次编译所得的exe,它们的MD5校验值,都不一样?
代码没有经过任何改动,然后编译N次,得N个exe,但是这N个exe,他们的MD5值,都不一样,为什么?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
startququ
2012-04-25
打赏
举报
回复
我知道MD5是什么。我以前写过计算MD5值的代码。
[Quote=引用 9 楼 的回复:]
你知道md5加密之前的源字符串是什么么? 应该是一些可变的源数据
[/Quote]
orochiheart
2012-04-25
打赏
举报
回复
你知道md5加密之前的源字符串是什么么? 应该是一些可变的源数据
showjancn
2012-04-25
打赏
举报
回复
应该没有编译信息,可能跟编译器有关,因为编译时,比如变量、函数名、类名等,编译器都将动态生成,可能会不一样。
没有查证。
startququ
2012-04-25
打赏
举报
回复
我用g++编译器,编译c++代码:
如果代码不经任何改动,每次编译出来的exe,MD5都是一样的。
[Quote=引用 5 楼 的回复:]
當然不一樣,這是唯一
[/Quote]
startququ
2012-04-25
打赏
举报
回复
“唯一”= “不一样” ?
我的源代码,都没有经过任何改动。
编译的时候,被添加了哪些不一样的东西?
[Quote=引用 5 楼 的回复:]
當然不一樣,這是唯一
[/Quote]
crackdung
2012-04-25
打赏
举报
回复
當然不一樣,這是唯一
startququ
2012-04-25
打赏
举报
回复
没有人知道吗?
startququ
2012-04-25
打赏
举报
回复
能否去掉这些编译信息?
[Quote=引用 2 楼 的回复:]
里面含用编译时间日期..等一些信息数据
[/Quote]
lilei_new
2012-04-25
打赏
举报
回复
里面含用编译时间日期..等一些信息数据
lilei_new
2012-04-25
打赏
举报
回复
估计里面含有编译信息,比如编译时间日期..
mrsupersky
2012-04-25
打赏
举报
回复
[Quote=引用 26 楼 的回复:]
我问的,正是:编译结果中,哪些是变动的信息。
引用 24 楼 的回复:
.NET是中間語言》需要JIT的,慢慢去理解,,,
引用 23 楼 的回复:
你懂什麽叫做尋址嗎?自己去理解
[/Quote]
这个问题你的搞搞 怎么个反编译了
我是说你要是能够做出.net Reflector类似的软件 的话,那你就知道是怎么回事了。。。
startququ
2012-04-25
打赏
举报
回复
我问的,正是:编译结果中,哪些是变动的信息。
[Quote=引用 24 楼 的回复:]
.NET是中間語言》需要JIT的,慢慢去理解,,,
[/Quote]
[Quote=引用 23 楼 的回复:]
你懂什麽叫做尋址嗎?自己去理解
[/Quote]
startququ
2012-04-25
打赏
举报
回复
我题目不是已经说了吗:代码不经过任何的改动,编译N次,就有N个MD5值。
注意:前提是“不经过任何改动”的N次编译。
[Quote=引用 21 楼 的回复:]
不和你說,總之修改就一定會變,這個道理都不懂,,哎,注意:我說的是修改,包括你在源代碼哪怕增加一行空白行,,,,都會變
[/Quote]
crackdung
2012-04-25
打赏
举报
回复
.NET是中間語言》需要JIT的,慢慢去理解,,,
crackdung
2012-04-25
打赏
举报
回复
你懂什麽叫做尋址嗎?自己去理解
startququ
2012-04-25
打赏
举报
回复
我说的是不修改的情况下,一个符号都不增加、不减少、不修改。
[Quote=引用 21 楼 的回复:]
不和你說,總之修改就一定會變,這個道理都不懂,,哎,注意:我說的是修改,包括你在源代碼哪怕增加一行空白行,,,,都會變
[/Quote]
crackdung
2012-04-25
打赏
举报
回复
不和你說,總之修改就一定會變,這個道理都不懂,,哎,注意:我說的是修改,包括你在源代碼哪怕增加一行空白行,,,,都會變
startququ
2012-04-25
打赏
举报
回复
release的,也是每次都不一样。
[Quote=引用 17 楼 的回复:]
release试试看
对于文件,有个关键的问题:exe文件里好像是有时间信息的。比如创建时间,最后修改时间等。原始信息里应该是有创建时间信息的。
还有可能,debug的不一样,release的一样。
[/Quote]
startququ
2012-04-25
打赏
举报
回复
G++编译器,就是编译多少次,MD5、SHA1这些校验信息都一样。
不知道.Net的编译器,在exe里放了什么东西??
[Quote=引用 18 楼 的回复:]
MD5 ,SHA1肯定前後編譯的不一樣,如果你能做到,,,很多事情都可以了
[/Quote]
crackdung
2012-04-25
打赏
举报
回复
MD5 ,SHA1肯定前後編譯的不一樣,如果你能做到,,,很多事情都可以了
加载更多回复(6)
从D盾
MD5
值
到文件完整性
校验
:原理、应用与安全实践
哈希算法是计算机安全领域的基础技术,它通过单向加密函数为数据生成唯一的“数字指纹”。
MD5
作为经典的哈希算法,其核心原理是将任意长度数据映射为固定长度哈希
值
,具备确定性和雪崩效应,常用于文件完整性
校验
。在安全运维中,通过比对文件
MD5
值
与官方基准
值
,可有效识别恶意篡改、确保软件来源可信,这是应急响应和入侵排查的关键手段。在CTF竞赛等场景中,理解
MD5
的弱类型比较特性还能帮助解决文件上传绕过等挑战。本文以D盾防火墙为例,深入解析
MD5
在安全领域的实际应用,涵盖从原理认知到服务器入侵排查、CTF解题的完整实践
MD5
末尾填充扰动原理与批量文件
校验
绕过实践
MD5
是一种基于Merkle–Damgård结构的密码学哈希函数,其计算过程包含消息填充与长度追加等确定性步骤。正因该机制具有中间状态可恢复性,使得在不修改原始内容的前提下,仅通过可控末尾填充即可精准调控最终哈希
值
——这并非暴力碰撞,而是利用哈希函数内部压缩逻辑的工程化应用。该技术广泛用于遗留系统兼容测试、日志回放环境构建及固件签名验证等场景,尤其适用于.log、.csv等纯文本格式的非侵入式
校验
适配。本文聚焦
MD5
扰动器的底层原理、命令行批量操作及CI集成实践,涵盖padding构造、中间态提取、BOM兼
不安装任何软件或脚本使用powershell快速计算文件的
MD5
/SHA1/SHA256等
校验
值
有的时候vb.net教程在检查升级过程c#教程中需要对xml文件进行python基础教程签名,而xml文件中一般都需要包含安装包的SHA256
值
,这java基础教程里分享一个sql教程使用PowerShell快速计算SHA256等其他
值
的方法。 一、在需要计算文件SHA256或者
MD5
的路径下启动PowerShell certutil 支持的算法有很多,使用certutil -hashfile-? 可以看到有哪些和用法。 使用一个
exe
举例,我进入到我
编译
好
exe
的文件夹E:.
MD5
碰撞攻击实战:使用fastcoll工具生成与验证碰撞文件
哈希函数是信息安全中用于数据完整性
校验
和数字签名的核心密码学组件,其核心原理是将任意长度的输入映射为固定长度的输出。然而,当哈希函数存在碰撞漏洞时,即两个不同的输入产生
相同
的哈希
值
,其安全性将受到严重威胁。
MD5
算法因其抗碰撞性被攻破,已不再适用于安全敏感场景。在工程实践中,理解碰撞原理对于安全审计、漏洞分析和CTF竞赛至关重要。通过使用fastcoll工具,可以快速生成
MD5
碰撞对,配合Python脚本进行自动化验证,这不仅能加深对哈希函数脆弱性的理解,还能应用于软件供应链安全测试和渗透测试等场景。本文以
MFC实现文件
校验
和工具:CRC32与
MD5
计算实战
在数据传输与存储过程中,如何快速验证文件是否完整是开发者和用户共同关心的问题。
校验
和(Checksum)与哈希算法(如CRC32、
MD5
)通过计算固定长度的数
值
指纹,为文件完整性提供了高效的判断依据。CRC32计算速度快、实现简单,适合传输
校验
;
MD5
虽已不适用于安全对抗,但仍是常见的文件比对方式。在实际应用中,无论是下载大型软件包还是复制重要数据,计算并比对
校验
值
都能有效识别文件损坏或篡改。针对Windows平台,MFC对话框工程凭借成熟的控件封装和快速开发能力,成为实现此类桌面小工具的轻量级选择。本文以
C#
111,128
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章