🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
16 messages
16 total messages Started by pythonlogist.WYTNIJ Fri, 10 Apr 2009 20:51
md5 w pythonie na duzych plikach
#25971
Author: pythonlogist.WYTNIJ
Date: Fri, 10 Apr 2009 20:51
12 lines
1280 bytes
witam,
Chcialbym za pomoca pythona hashowac (md5) pliki o wielkosci kilkuset
megabajtow lub nawet kilku gigabajtow. Standardowy modul hashlib nie wykona
tej operacji, bo wymaga wczytania calego pliku do pamieci (chyba, ze czegos
nie o nim nie wiem). Czy istnieje jakis sposob obliczania sum md5 po kawalku i
laczenia ze soba, lub inny sposob, aby wykonac w Pythonie zadana operacje? A
moze uzyc jakies narzedzie command line i wywolac je z pythona?

Dziekuje za pomoc. 

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: md5 w pythonie na duzych plikach
#25972
Author: Piotr Keplicz
Date: Fri, 10 Apr 2009 20:56
8 lines
1160 bytes
> Chcialbym za pomoca pythona hashowac (md5) pliki o wielkosci kilkuset
> megabajtow lub nawet kilku gigabajtow. Standardowy modul hashlib nie
> wykona tej operacji, bo wymaga wczytania calego pliku do pamieci (chyba,
> ze czegos nie o nim nie wiem).

hashlib.md5().update()

.pk.
Re: md5 w pythonie na duzych plikach
#25973
Author: Artur Lew
Date: Fri, 10 Apr 2009 20:58
16 lines
1612 bytes
pythonlogist.WYTNIJ@gazeta.pl wrote:
> Chcialbym za pomoca pythona hashowac (md5) pliki o wielkosci kilkuset
> megabajtow lub nawet kilku gigabajtow. Standardowy modul hashlib nie wykona
Powiedz mi jaki jest sens wykonywania takiej operacji?
Przeciez dzieki temu nic nie zyskacz oprocz zamulenia kompa.
Jezeli sa to pliki graficzne to byc moze znacznie lepiej bedzie hashowac
sam naglowek pliku ktory powinien sie zmienic podczas zapisu (np obszar
z EXIF w JPEG)
Jezeli chcesz wiedziec czy sie pliki nie zmienily to czy nie lepiej uzyc
jakiegos mechanizmu porownywania dat modyfikacji, sledzenia operacji na
pliku, itp?

-- 
Pozdrawiam
Artur Lew
arturdotlewatgmaildotcom
Re: md5 w pythonie na duzych plikach
#25974
Author: Radosław Bułat
Date: Mon, 13 Apr 2009 09:31
23 lines
1977 bytes
Artur Lew pisze:
> pythonlogist.WYTNIJ@gazeta.pl wrote:
>> Chcialbym za pomoca pythona hashowac (md5) pliki o wielkosci kilkuset
>> megabajtow lub nawet kilku gigabajtow. Standardowy modul hashlib nie wykona
> Powiedz mi jaki jest sens wykonywania takiej operacji?
> Przeciez dzieki temu nic nie zyskacz oprocz zamulenia kompa.
> Jezeli sa to pliki graficzne to byc moze znacznie lepiej bedzie hashowac
> sam naglowek pliku ktory powinien sie zmienic podczas zapisu (np obszar
> z EXIF w JPEG)
> Jezeli chcesz wiedziec czy sie pliki nie zmienily to czy nie lepiej uzyc
> jakiegos mechanizmu porownywania dat modyfikacji, sledzenia operacji na
> pliku, itp?
> 

Zatem wytłumacz całemu środowiskowi OS, że dołączanie informacji o hashu 
md5/sha1 do plików z releasami to głupota :P. Widocznie kolega chce mieć 
  100% pewność, że nic w pliku się nie zmieniło. Nie ma więc sensu 
przyjmować postawy "na pewno nie jest Ci to potrzebne", tym bardziej, że 
jego problem jest łatwy w rozwiązaniu.

-- 
Radosław Bułat
http://radarek.jogger.pl - mój blog
Re: md5 w pythonie na duzych plikach
#25975
Author: szymon
Date: Mon, 13 Apr 2009 10:09
27 lines
2119 bytes
Dnia 2009-04-13, pon o godzinie 11:31 +0200, Radosław Bułat pisze:
> Artur Lew pisze:
> > pythonlogist.WYTNIJ@gazeta.pl wrote:
> >> Chcialbym za pomoca pythona hashowac (md5) pliki o wielkosci kilkuset
> >> megabajtow lub nawet kilku gigabajtow. Standardowy modul hashlib nie wykona
> > Powiedz mi jaki jest sens wykonywania takiej operacji?
> > Przeciez dzieki temu nic nie zyskacz oprocz zamulenia kompa.
> > Jezeli sa to pliki graficzne to byc moze znacznie lepiej bedzie hashowac
> > sam naglowek pliku ktory powinien sie zmienic podczas zapisu (np obszar
> > z EXIF w JPEG)
> > Jezeli chcesz wiedziec czy sie pliki nie zmienily to czy nie lepiej uzyc
> > jakiegos mechanizmu porownywania dat modyfikacji, sledzenia operacji na
> > pliku, itp?
> > 
> 
> Zatem wytłumacz całemu środowiskowi OS, że dołączanie informacji o hashu 
> md5/sha1 do plików z releasami to głupota :P. Widocznie kolega chce mieć 
>   100% pewność, że nic w pliku się nie zmieniło. Nie ma więc sensu 
> przyjmować postawy "na pewno nie jest Ci to potrzebne", tym bardziej, że 
> jego problem jest łatwy w rozwiązaniu.
> 

100% pewności, że nic się nie zmieniło daje podpisanie pliku, bo
używanie md5 tego nie da.

-- 
szymon
Re: md5 w pythonie na duzych plikach
#25976
Author: Jacek Politowski
Date: Mon, 13 Apr 2009 16:19
15 lines
1389 bytes
In article <1239617398.32082.0.camel@szymon>
szymon <news@mabateus.pl_WITHOUT> wrote:

>> (...) Widocznie kolega chce mieć 
>>   100% pewność, że nic w pliku się nie zmieniło. (...)

> 100% pewności, że nic się nie zmieniło daje podpisanie pliku, bo
> używanie md5 tego nie da.

I jeszcze znalezienie softu, który podpisze _cały_ plik, a nie tylko
jego skrót md5(/sha)...


-- 
Jacek Politowski
Re: md5 w pythonie na duzych plikach
#25977
Author: Artur Lew
Date: Mon, 13 Apr 2009 17:36
23 lines
2152 bytes
Radosław Bułat wrote:
> Zatem wytłumacz całemu środowiskowi OS, że dołączanie informacji o hashu
> md5/sha1 do plików z releasami to głupota :P. Widocznie kolega chce mieć
>  100% pewność, że nic w pliku się nie zmieniło. Nie ma więc sensu
Najwyrazniej nie zrozumiales istoty zagadnienia.
Nie jest problemem stworzyc hasha md5 z pliku (m in przez wspomniane
md5.update()) tylko pytanie czy jest sens tworzyc go dla wielu duzych
plikow. To ze stworzysz sobie md5 dla pliku instalki nie oznacza ze da
sie to efektywnie zrobic dla tysiaca pliku w katalogu.
Operacja jest dosc kosztowna obliczeniowo i dodatkowo wcale nie
gwarantuje ze dla dwoch roznych plikow nie dostaniesz tego samego md5
aczkolwiek prawdopodobienstwo tego jest bardzo male.
Tym wiekszy problem gdy zmianie ulega np blizej nie okreslone 10 bajtow
z konca pliku ktory ma pare GB.
"Latwosc" tego rozwiazania wlasnie moze byc troche iluzoryczna i byc
moze zamiast md5 czy inny hash wystarczy spojny interfejs dostepu do
tych plikow (aby przechwycic moment zapisu) albo chociazby sprawdzania
daty modyfikacji.

-- 
Pozdrawiam
Artur Lew
arturdotlewatgmaildotcom
Re: md5 w pythonie na duzych plikach
#25978
Author: pythonlogist
Date: Mon, 13 Apr 2009 20:56
11 lines
1252 bytes
Dziekuje wszystkim za pomoc. Uzywanie mata danych z plikow nie jest
rozwiazaniem, bo nie wszystkie formaty maja takie rekordy. Data modyfikacji
rowniez, bo chce znajdowac takze pliki modyfikowane w roznym czasie a binarnie
rownowazne. Sam mam watpliowsci co do hasowania, bo jest to metoda dosc
kosztowna, ale nie mowimy to o tysiacach plikow na minute (a raczej kilku na
minute).

pozdrawiam!

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: md5 w pythonie na duzych plikach
#25979
Author: Artur Lew
Date: Mon, 13 Apr 2009 21:37
25 lines
2106 bytes
pythonlogist@gazeta.SKASUJ-TO.pl wrote:
> Dziekuje wszystkim za pomoc. Uzywanie mata danych z plikow nie jest
> rozwiazaniem, bo nie wszystkie formaty maja takie rekordy. Data modyfikacji
Hmm czy ten sam czas tzn w tej samej milisekundzie ?
Bo co najmniej taka rozdzielczosc bedziesz mial a wiec dla realnych
przypadkow zupelnie wystarczajaca ?
Dodatkowo w zaleznosci od systemu operacyjnego mozesz dosc latwo zalozyc
odpowiednie hooki zeby sprawdzic co sie zmienilo w danym katalogu.
Dzieki czemu problem algorytmiczny zamienia sie w zwykla funkcje ktora
wykonujesz przy danym zdarzeniu :)
Pod Windows mozesz skorzystac z gotowych funkcji w bibliotece win32.
Pod Unixem tego nie robilem ale nie sadze zeby to byl problem.

> rowniez, bo chce znajdowac takze pliki modyfikowane w roznym czasie a binarnie
> rownowazne. 
Wiec tutaj odpada Ci md5 chyba ze w/w date takze dorzucisz do hasha...

Jezeli chcesz sie bawic faktycznie w md5/ssh to uzywajac powyzszych
metod przynajmniej nie bedziesz generowal hasha dla wszystkich plikow w
katalogu co minute tylko dla tych ktore faktycznie sie zmienily...

-- 
Pozdrawiam
Artur Lew
arturdotlewatgmaildotcom
Re: md5 w pythonie na duzych plikach
#25980
Author: pythonlogist
Date: Tue, 14 Apr 2009 19:57
28 lines
1972 bytes
Artur Lew <no_spamik_artee@poczta.onet.pl> napisał(a): 


> Wiec tutaj odpada Ci md5 chyba ze w/w date takze dorzucisz do hasha...
> 
> Jezeli chcesz sie bawic faktycznie w md5/ssh to uzywajac powyzszych
> metod przynajmniej nie bedziesz generowal hasha dla wszystkich plikow w
> katalogu co minute tylko dla tych ktore faktycznie sie zmienily...

Przepraszam, ale chyba sie nie zrozumielismy. Ja chce wiedziec, ze dwa pliki,
pomimo, ze maja rozne daty modyfikacji i inna lokalizacje na dysku sa
wlasciwie duplikatami (to znaczy sa binarnie rownowazne). 

Tu nie chodzi o nieustanne przeszukiwanie katalogow, bo w takim przypadku
pewnie uzylbym daty modyfikacji albo jakiegos gotowego narzedzia typy rsync.
Sytuacja jest niejako odwrotna:
umieszczam w swojej bazie danych rozne pliki, niektore calkiem spore, inne po
kilka magabajtow. Chce je hashowac, aby wiedziec, kiedy zdarzy mi sie kopia
pliku, ktory juz znajduje sie w bazie. Jak rozumiem, to wlasnie uzyskam za
pomoca md5.

Stad bylo moje pytanie.
dziekuje,
skk.


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: md5 w pythonie na duzych plikach
#25981
Author: szymon
Date: Tue, 14 Apr 2009 20:40
27 lines
2126 bytes
Dnia 2009-04-14, wto o godzinie 19:57 +0000, pisze:
> Artur Lew <no_spamik_artee@poczta.onet.pl> napisał(a): 
> 
> 
> > Wiec tutaj odpada Ci md5 chyba ze w/w date takze dorzucisz do hasha...
> > 
> > Jezeli chcesz sie bawic faktycznie w md5/ssh to uzywajac powyzszych
> > metod przynajmniej nie bedziesz generowal hasha dla wszystkich plikow w
> > katalogu co minute tylko dla tych ktore faktycznie sie zmienily...
> 
> Przepraszam, ale chyba sie nie zrozumielismy. Ja chce wiedziec, ze dwa pliki,
> pomimo, ze maja rozne daty modyfikacji i inna lokalizacje na dysku sa
> wlasciwie duplikatami (to znaczy sa binarnie rownowazne). 
> 
> Tu nie chodzi o nieustanne przeszukiwanie katalogow, bo w takim przypadku
> pewnie uzylbym daty modyfikacji albo jakiegos gotowego narzedzia typy rsync.
> Sytuacja jest niejako odwrotna:
> umieszczam w swojej bazie danych rozne pliki, niektore calkiem spore, inne po
> kilka magabajtow. Chce je hashowac, aby wiedziec, kiedy zdarzy mi sie kopia
> pliku, ktory juz znajduje sie w bazie. Jak rozumiem, to wlasnie uzyskam za
> pomoca md5.

md5 może też powiedzieć, że 2 różne pliki są takie same, zależy jaki
poziom bezpieczeństwa chcesz uzyskać.

-- 
szymon
Re: md5 w pythonie na duzych plikach
#25982
Author: MS
Date: Sun, 19 Apr 2009 17:07
19 lines
1661 bytes
>> Wiec tutaj odpada Ci md5 chyba ze w/w date takze dorzucisz do hasha...
>> 
>> Jezeli chcesz sie bawic faktycznie w md5/ssh to uzywajac powyzszych
>> metod przynajmniej nie bedziesz generowal hasha dla wszystkich plikow w
>> katalogu co minute tylko dla tych ktore faktycznie sie zmienily...
> 
> Przepraszam, ale chyba sie nie zrozumielismy. Ja chce wiedziec, ze dwa pliki,
> pomimo, ze maja rozne daty modyfikacji i inna lokalizacje na dysku sa
> wlasciwie duplikatami (to znaczy sa binarnie rownowazne). 
> 


W takim razie nie musisz obliczac hasha kazdego pliku, tylko tych ktore
maja np. taki sam rozmiar (jezeli maja rozny rozmiar to i md5 bedzie
rozny). 


pozdr
ms
Re: md5 w pythonie na duzych plikach
#25983
Author: Przemysław Kowalczyk
Date: Sun, 19 Apr 2009 19:35
18 lines
1473 bytes
On Tue, 14 Apr 2009 21:57:54 +0200,   <pythonlogist@gazeta.SKASUJ-TO.pl>  
wrote:
> umieszczam w swojej bazie danych rozne pliki, niektore calkiem spore,  
> inne po
> kilka magabajtow. Chce je hashowac, aby wiedziec, kiedy zdarzy mi sie  
> kopia
> pliku, ktory juz znajduje sie w bazie. Jak rozumiem, to wlasnie uzyskam  
> za
> pomoca md5.

duzo prosciej i wydajniej bedzie wybrac tylko te, ktore maja ten sam  
rozmiar i uzyc na nich systemowego diff z odpowiednimi opcjami.

pzdr
	szeryf

-- 
Przemysław ,,Szeryf'' Kowalczyk :: http://szeryf.wordpress.com/
Re: md5 w pythonie na duzych plikach
#25984
Author: zielmicha
Date: Wed, 22 Apr 2009 08:13
26 lines
2191 bytes
On 19 Kwi, 21:35, Przemysław Kowalczyk <some...@microsoft.com> wrote:
> On Tue, 14 Apr 2009 21:57:54 +0200,   <pythonlog...@gazeta.SKASUJ-TO.pl>  
> wrote:
>
> > umieszczam w swojej bazie danych rozne pliki, niektore calkiem spore,  
> > inne po
> > kilka magabajtow. Chce je hashowac, aby wiedziec, kiedy zdarzy mi sie  
> > kopia
> > pliku, ktory juz znajduje sie w bazie. Jak rozumiem, to wlasnie uzyskam  
> > za
> > pomoca md5.
>
> duzo prosciej i wydajniej bedzie wybrac tylko te, ktore maja ten sam  
> rozmiar i uzyc na nich systemowego diff z odpowiednimi opcjami.
>
> pzdr
>         szeryf
>
> --
> Przemysław ,,Szeryf'' Kowalczyk ::http://szeryf.wordpress.com/

1. Sprawdz wielkosc pliku.
2. Sprawdz CRC32.
3. Sprawdz MD5.
4. Jesli chcesz miec pewnosc uzyj jeszcze SHA1, SHA256, czy MD5 z
saltem.
Re: md5 w pythonie na duzych plikach
#25985
Author: Przemysław Kowalczyk
Date: Wed, 22 Apr 2009 16:34
31 lines
1997 bytes
On Wed, 22 Apr 2009 10:13:38 +0200, <zielmicha@gmail.com> wrote:
>> > umieszczam w swojej bazie danych rozne pliki, niektore calkiem spore,  
>>  
>> > inne po
>> > kilka magabajtow. Chce je hashowac, aby wiedziec, kiedy zdarzy mi sie  
>>  
>> > kopia
>> > pliku, ktory juz znajduje sie w bazie. Jak rozumiem, to wlasnie  
>> uzyskam  
>> > za
>> > pomoca md5.
>>
>> duzo prosciej i wydajniej bedzie wybrac tylko te, ktore maja ten sam  
>> rozmiar i uzyc na nich systemowego diff z odpowiednimi opcjami.
>
> 1. Sprawdz wielkosc pliku.
> 2. Sprawdz CRC32.
> 3. Sprawdz MD5.
> 4. Jesli chcesz miec pewnosc uzyj jeszcze SHA1, SHA256, czy MD5 z
> saltem.

LOL, zadna z wymienionych przez Ciebie metod nie daje 100% pewnosci, nawet  
wszystkie razem nie daja takiej pewnosci. 100% pewnosci daje tylko  
sprawdzenie bajt po bajcie, jak pisalem wyzej. a przy okazji jest  
najszybsze :)

pzdr
	szeryf

-- 
Przemysław ,,Szeryf'' Kowalczyk :: http://szeryf.wordpress.com/
Re: md5 w pythonie na duzych plikach
#25986
Author: Piotr Blaszynski
Date: Wed, 22 Apr 2009 16:58
35 lines
2482 bytes
Przemysław Kowalczyk <someone@microsoft.com> wrote:
> On Wed, 22 Apr 2009 10:13:38 +0200, <zielmicha@gmail.com> wrote:
> >> > umieszczam w swojej bazie danych rozne pliki, niektore calkiem spore,  
> >>  
> >> > inne po
> >> > kilka magabajtow. Chce je hashowac, aby wiedziec, kiedy zdarzy mi sie  
> >>  
> >> > kopia
> >> > pliku, ktory juz znajduje sie w bazie. Jak rozumiem, to wlasnie  
> >> uzyskam  
> >> > za
> >> > pomoca md5.
> >>
> >> duzo prosciej i wydajniej bedzie wybrac tylko te, ktore maja ten sam  
> >> rozmiar i uzyc na nich systemowego diff z odpowiednimi opcjami.
> >
> > 1. Sprawdz wielkosc pliku.
> > 2. Sprawdz CRC32.
> > 3. Sprawdz MD5.
> > 4. Jesli chcesz miec pewnosc uzyj jeszcze SHA1, SHA256, czy MD5 z
> > saltem.
> 
> LOL, zadna z wymienionych przez Ciebie metod nie daje 100% pewnosci, nawet  
> wszystkie razem nie daja takiej pewnosci. 100% pewnosci daje tylko  
> sprawdzenie bajt po bajcie, jak pisalem wyzej. a przy okazji jest  
> najszybsze :)

Chyba, że pliki leżą na dwóch końcach sieci, chyba jedyny przypadek kiedy
lepiej zrobić jakiś skrót. Jeden.

-- 
    ,--._______   -----------------------------------------------------
   '.  o}      )~                Piotr Błaszyński
(_/,=,   |___| |          mailto: pblaszynski@wi.ps.pl
    /_/|_| |_|_|  _____________________________________________________
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads