Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 23, 2010 15:26:37

van-gog
От:
Зарегистрирован: 2008-04-19
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Контрольная сумма загружаемого файла

Доброго времени суток.


возникла необходимость подсчета контрольной суммы (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)



Офлайн

#2 Фев. 23, 2010 15:40:19

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Контрольная сумма загружаемого файла

Посмотри на метод update в документации http://docs.python.org/library/hashlib.html



Офлайн

#3 Фев. 23, 2010 15:44:55

van-gog
От:
Зарегистрирован: 2008-04-19
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Контрольная сумма загружаемого файла

igor.kaist
Посмотри на метод update в документации http://docs.python.org/library/hashlib.html
Я видел этот методю Но дело в том, что если загрузить в него уже посчитанный хеш - то он еще раз хешируется и контрольная сумма потом уже не совпадает (((



Офлайн

#4 Фев. 23, 2010 15:55:15

lizzard
От:
Зарегистрирован: 2009-03-05
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Контрольная сумма загружаемого файла

Если я не ошибаюсь, то “дохешировать” нельзя, можно заново пересчитать.



Офлайн

#5 Фев. 23, 2010 18:31:06

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Контрольная сумма загружаемого файла

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

А если это отнимает слишком много ресурсов компа и у вас не сверх-супер-пупер надежная система, то можно использовать алгоритм попроще-быстрее.



Отредактировано (Фев. 23, 2010 18:33:21)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version