【问题标题】:Java validate fileJava 验证文件
【发布时间】:2011-12-05 13:47:12
【问题描述】:

目前,我有一台服务器可以连接 2 个客户端。这两个客户端的硬盘上都有一个文本文件,程序一启动就会读取该文本文件。此文本文件应在两个客户端(应由服务器验证)上包含完全相同的数据(它只是纯文本),否则服务器可能不为客户端提供服务。

我想知道如何正确执行此操作。我应该怎么办?计算一个哈希码,或者使用 MD5/SHA1/SHA2 来做这样的事情?我应该先读取文件并在创建的对象上计算哈希码还是直接在文件上计算 MD5?

谢谢

【问题讨论】:

  • 也许是CRC32 check?文件内容有多大?如果很小,您可能只是逐字节比较它们。顺便说一句 - 这为最终用户提供了哪些应用程序功能?

标签: java md5 hashcode


【解决方案1】:

为了非常非常确定,您必须将两个文本文件的内容传输到服务器并将它们作为字符串进行比较。

出于所有实际目的,您可以计算哈希码并在服务器上比较该值。看看 apache commons 中的 FileUtil 类。它定义了一个checksumCRC32(File file) 方法,您可以使用它来计算文件的校验和。如果两个文件的校验和相等,则可以假定内容相等。尽管如此,它们不同的概率是 1 / 2^32。

【讨论】:

    【解决方案2】:

    您可以使用来自 Apache Commons 的 DigestUtils 轻松计算文件的哈希值。它有很好的计算哈希的方法,无论是 MD5 还是 SHA1。然后只需比较每个客户端文件的哈希值。

    另外,您应该知道,确切的哈希值并不能保证 100% 的文件是相同的。鉴于它们的哈希值相等,文件不相同的情况非常罕见。但是,根据此确定在您的应用中是否至关重要,您可能必须在哈希值相等时逐字节比较文件以确认它们具有准确的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多