разъяснение относительно вычисления контрольной суммы MD5 в Java - PullRequest
2 голосов
/ 14 февраля 2012

Я использовал код в этом обсуждении стекопотока , чтобы вычислить контрольную сумму файла в Java.

Я немного озадачен этой работой. Я применяю это в своей задаче следующим образом:

У меня есть файл с некоторыми данными. Я рассчитал размер текста в файле, используя

  System.out.println(file1content.toString().getBytes().length);  the o/p is 4096 bytes

Когда я пытаюсь выполнить код контрольной суммы, я понимаю, что число считываемых байтов составляет 4096 + 12 байтов, равны ли эти 12 байтов имени файла?

У меня есть другой файл2 с тем же содержимым, что и файл1 (я знаю это точно, потому что я извлекаю текст в строку и сравниваю его с String.equals), но сгенерированная контрольная сумма отличается. Мне интересно, почему это происходит?

Я что-то здесь упускаю?

Редактировать 1:

Я читаю данные из файла, используя следующий цикл:

 InputStream fis =  new FileInputStream(filename);
 byte[] buffer = new byte[1024];
  do {
       numRead = fis.read(buffer);
       System.out.println(" "+ numRead);
       if (numRead > 0) {
           complete.update(buffer, 0, numRead);
       }
   } while (numRead != -1);

   fis.close();

Вывод numread:

 1024
 1024
 1024
 1024
 12
 -1

С уважением, Бхавья

1 Ответ

1 голос
/ 15 февраля 2012

Ну, я узнал, что это за ошибка, я не уверен, что это я представил ошибку или она уже была.

Я понял, что данные, считываемые из файла, были неправильными, некоторые части файла были прочитаны несколько раз, поэтому я изменил код, чтобы получить данные из файла, указав начальную и конечную позиции.

В случае, если кто-то сталкивается с этой проблемой, пожалуйста, дайте мне знать, я могу опубликовать решение для этого.

С уважением,

...