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

时间:2014-04-03 19:19:36

标签: java hash compiler-construction

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

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

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

1 个答案:

答案 0 :(得分:2)

  

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

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

虽然可能值得研究文献。 Google快速搜索发现了这一点:

  

A Plagiarism Detection Technique for Java Program Using Bytecode Analysis

      Jeong-Hoon Ji,Gyun Woo,Hwan-Gue Cho

     

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

还有Deducing Similarities in Java Sources from Bytecodes,但它在Java术语(1998)中极其陈旧。可能仍然是一个有价值的想法来源。

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