将两个.class文件与哈希值进行比较



我发现编译器可以使用相同的.java源文件制作不同的.class文件。我刚刚尝试使用 Ant 和 Eclipse 编译.java文件,结果的文件大小不同,这使得这些文件的哈希值不匹配。

使用Ant,我发现已经生成了一些空的匿名内部类。那么,如何通过哈希值或任何快速匹配来自不同编译器的.class文件呢?

注意:如果我生成要.java的.class文件,则哈希值匹配。这是唯一的办法吗?

那么,如何通过哈希值或任何快速匹配来自不同编译器的.class文件呢?

简而言之,我认为没有一个简单的方法。不同的编译器很可能从相同的源代码中生成不同的字节码。

不过,可能值得研究文献。快速的谷歌搜索发现:

一种使用字节码分析的Java程序抄袭检测技术

智正勋, 吴京, 赵焕格

摘要 大多数抄袭检测系统评估源代码的相似性,检测抄袭的程序对。如果我们在抄袭检测中使用源代码,源代码安全性可能是一个重大问题。基于目标代码的抄袭检测可用于保护源代码的安全。在本文中,我们提出了一种新的剽窃检测技术,用于使用字节码的Java程序,而无需参考其源代码。使用字节码的抄袭检测程序包括两个主要步骤。首先,我们通过分析方法的代码区域从 Java 类文件生成标记序列。然后,我们使用自适应局部对齐评估令牌序列之间的相似性。根据实验结果,我们可以发现源代码相似度和字节码相似度的分布非常相似。此外,对于典型的测试数据,源代码对的相似性和字节码对的相似性之间的相关性足够高。使用字节码的抄袭检测系统可以作为通过源代码比较检测抄袭之前的初步验证工具。

还有从字节码推断出Java源代码中的相似性,但它在Java术语(1998)中非常过时。不过,可能仍然是一个有价值的想法来源。

我相信还有更多的文献。这是我在两分钟内能找到的。

最新更新