如果我在源代码上插入注释,它的二进制MD5会被改变吗?
If I insert a comment on a source code will it`s binarries MD5 be changed?
我只是想知道....如果是这样的话,我正在考虑为我销售的软件的每个客户创建不同的疾病,我是否可以使用MD5检查每个人,只需更改源代码中的注释并重新编译?我的意思是,c++、c#或java代码中的##注释会改变二进制MD5吗?
注释在编译过程的早期(或之前)被删除,因此插入注释不会改变编译后二进制文件的哈希值。
唯一的例外(我能想到的)是如果你的二进制文件包含行号,它可以根据注释改变。这通常发生在调试模式下编译时,但您也可以使用c++中的__LINE__
宏来强制执行。但即使在这种情况下,注释的内容也无关紧要,只与它占用了多少行无关(因此您不妨为此目的使用空行)。此外,发布的软件可能不应该包含这些信息。
简短的回答是否定的。注释在编译过程的早期被剥离。
更长的答案是,有时——但不可靠。有许多可预见的原因,可能会出现评论的痕迹(更像是副作用)。然而,这些都是脆弱的。
我想这是为了某种自动化过程,比如在网站上销售软件。如何输出一个头文件,如"user.h",简单地指定名称/电子邮件/用户名/等作为一个#define字符串,然后打印在你的程序的屏幕的某处(既为用户的利益,所以编译器不优化它)?它要求您为每个用户重新编译程序,但如果只需要几秒钟就可以构建,那么这可能不是问题。
在某些情况下,如果存在构建时间戳,则每次构建时的二进制文件都会更改。这可以提供您想要的可追溯性。但是,注释不应该影响发布模式二进制文件的MD5,除非你的编译器有bug。
注释不能编译为cpu操作码,因此它不会改变blob的哈希值
是它可以更改二进制文件。
例如,在C/c++中有LINE宏。如果在代码中使用此选项,则如果添加或删除带有注释的行,则会更改二进制文件。相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 正在尝试重载二进制搜索树分配运算符
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从二进制文件中读取字符串
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 带有数组键C++的二进制映射
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- Android NDK 获取二进制文件的 md5
- 将二进制文件内容保存在字符串中,以便能够对其进行 md5 并在以后与其他文件进行比较
- 如果我在源代码上插入注释,它的二进制MD5会被改变吗?