Найти - Пользователи
Полная версия: Контрольная сумма загружаемого файла
Начало » Python для новичков » Контрольная сумма загружаемого файла
1
van-gog
Доброго времени суток.


возникла необходимость подсчета контрольной суммы (SHA1) загружаемого через ФТП файла (на стороне сервера).
Если файл нормально загружается (т.е. без обрывов соединения) то хеш считается нормально.
Но… если, к примеру произошел обрыв связи -то я записываю в файл текущую контрольную сумму.

Собственно в чем вопрос: как можно продолжить подсчет контрольной суммы? т.е. к уже сохраненной контрольной сумме добавить недостающую часть (которая загрузится через какое-то время)?

вот кусок кода, который я использую для подсчета сумы:

import os
from pyftpdlib import ftpserver
import hashlib

class DTPHandler(ftpserver.DTPHandler):
def handle_read(self):
m = hashlib.sha1()
try:
chunk = self.recv(self.ac_in_buffer_size)
except socket.error:
self.handle_error()
else:
self.tot_bytes_received += len(chunk)
if not chunk:
self.transfer_finished = True
# тут запись в файл полученного значения
return
self.file_obj.write(self.data_wrapper(chunk))
m.update(chunk)
igor.kaist
Посмотри на метод update в документации http://docs.python.org/library/hashlib.html
van-gog
igor.kaist
Посмотри на метод update в документации http://docs.python.org/library/hashlib.html
Я видел этот методю Но дело в том, что если загрузить в него уже посчитанный хеш - то он еще раз хешируется и контрольная сумма потом уже не совпадает (((
lizzard
Если я не ошибаюсь, то “дохешировать” нельзя, можно заново пересчитать.
Zubchick
прикольно :)
Вообще зависит от алгоритма хеширования, но вам в любом случае придется пересчитывать файл заново.

А если это отнимает слишком много ресурсов компа и у вас не сверх-супер-пупер надежная система, то можно использовать алгоритм попроще-быстрее.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB