MD5 дайджест возобновленной загрузки - PullRequest
5 голосов
/ 07 февраля 2011

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...