2011-02-07 3 views
5

Я загружаю файл с http-сервера и должен учитывать, что в случайной точке во время загрузки сетевое соединение терпит неудачу или компьютер выходит из строя. Если это произойдет, я начну загрузку с использованием заголовка HTTP «Range:».MD5 дайджест возобновленной загрузки

Поскольку загрузка должна быть проверена против хеша MD5, мне кажется, что нет возможности использовать сетевой входной поток после возобновления, чтобы получить правильный хеш, поскольку java.security.MessageDigest, похоже, не имеет метода что в основном говорит: «Запустите текущий хеш md5 из этого частичного хэша md5, который у меня есть из предыдущей загрузки».

Я не очень хорошо знаком с внутренностями md5 - теоретически это возможно и есть ли библиотека, которая позволяет мне это делать?

Вычисление хеша md5 из загруженного файла было бы невероятно дорогостоящим.

+0

Я добавил «D» в названии, как это выглядело, как вы говорили о резюме, как в листе бумаги, который имеет свой опыт работы на нем – Woot4Moo

ответ

3

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

Если вы внедрили MD5 самостоятельно, вы можете сохранить состояние по частично загруженному файлу, а также возобновить расчет MD5. Например, используя this MD5 implementation, он должен быть таким же простым, как сохранение/загрузка com.twmacinta.util.MD5State state внутри com.twmacinta.util.MD5. Что касается вашего комментария, обратите внимание, что встроенные реализации полностью необязательны и должны работать в чистой Java. Вот цитата из documentation:

Этот класс будет пытаться использовать нативный метод для быстрого вычисления контрольных сумм, когда соответствующая родная библиотека доступна [...] Если библиотека не найдена, то код будет падать обратно на по умолчанию (медленнее) Java-код.
+0

К сожалению, в первоначальном посте я Жду» t упомянуть о возможности перезапуска jvm. Это должно быть также учтено. – EddyYosso

+0

Вы правы. Из взгляда на код, я понимаю, что вам нужно будет постоянно сохранять состояние в этом дайджесте. Спасибо. Единственное, что беспокоит меня с этой конкретной библиотекой, - это родные зависимости. Этот класс выглядит многообещающим, хотя http://ostermiller.org/utils/MD5.java.html – EddyYosso

2

Я только что закончил создание библиотеки для этой проблемы с помощью предлагаемого быстрого md5, но без встроенной поддержки. Вы можете сериализовать состояние и перезагрузить его, когда программа начнет резервное копирование.

https://code.google.com/p/project-penny/wiki/RecMD5

+0

Я исправил ссылку на wiki проекта-penny's (download manager). – eckes