Рассчитать хэш md5 на основе содержимого файла (значит, без имени файла) - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь вычислить хеш MD5 на основе содержимого файла, а не имени файла. В моем коде ниже при вычислении хеша MD5 для двух файлов с разными именами файлов, но с одинаковым содержимым, он генерирует два разных значения хеша MD5Я ожидал того же хеш-значения.

Код

 def computeMD5Hash(path: String): String = {
          val buffer = new Array[Byte](8192)
          val md5 = MessageDigest.getInstance("MD5")

          val dis = new DigestInputStream(new FileInputStream(new File(path)), md5)
          try {
            while (dis.read(buffer) != -1) {}
          } finally {
            dis.close()
          }

          md5.digest.map("%02x".format(_)).mkString
        }

println(computeMD5Hash("/Users/xxxx/Documents/Project/yyy/de/src/main/resources/input/xxxxx_list_01.txt"))
   println(computeMD5Hash("/Users/xxxx/Documents/Project/yyy/de/src/main/resources/input/xxxxx_list_03.txt")) 

Вывод

10d34fcb95ca6714fb00dae12527be4e
651c8eaf62016182d2a39c5442a339a8

Ожидаемый вывод

10d34fcb95ca6714fb00dae12527be4e
10d34fcb95ca6714fb00dae12527be4e

1 Ответ

0 голосов
/ 08 ноября 2019

Попробовал твой код и он у меня работает. Вы уверены, что файлы равны? Работает ли это, если вы берете один файл, явно копируете его в другое место и запускаете свою программу?

...