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
Author: pythonlogist.WYTNIJ
Date: Fri, 10 Apr 2009 20:51
Date: Fri, 10 Apr 2009 20:51
12 lines
1280 bytes
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
Author: Piotr Keplicz
Date: Fri, 10 Apr 2009 20:56
Date: Fri, 10 Apr 2009 20:56
8 lines
1160 bytes
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
Author: Artur Lew
Date: Fri, 10 Apr 2009 20:58
Date: Fri, 10 Apr 2009 20:58
16 lines
1612 bytes
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
Author: Radosław Bułat
Date: Mon, 13 Apr 2009 09:31
Date: Mon, 13 Apr 2009 09:31
23 lines
1977 bytes
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
Author: szymon
Date: Mon, 13 Apr 2009 10:09
Date: Mon, 13 Apr 2009 10:09
27 lines
2119 bytes
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
Author: Jacek Politowski
Date: Mon, 13 Apr 2009 16:19
Date: Mon, 13 Apr 2009 16:19
15 lines
1389 bytes
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
Author: Artur Lew
Date: Mon, 13 Apr 2009 17:36
Date: Mon, 13 Apr 2009 17:36
23 lines
2152 bytes
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
Author: pythonlogist
Date: Mon, 13 Apr 2009 20:56
Date: Mon, 13 Apr 2009 20:56
11 lines
1252 bytes
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
Author: Artur Lew
Date: Mon, 13 Apr 2009 21:37
Date: Mon, 13 Apr 2009 21:37
25 lines
2106 bytes
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
Author: pythonlogist
Date: Tue, 14 Apr 2009 19:57
Date: Tue, 14 Apr 2009 19:57
28 lines
1972 bytes
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
Author: szymon
Date: Tue, 14 Apr 2009 20:40
Date: Tue, 14 Apr 2009 20:40
27 lines
2126 bytes
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
Author: MS
Date: Sun, 19 Apr 2009 17:07
Date: Sun, 19 Apr 2009 17:07
19 lines
1661 bytes
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
Author: Przemysław Kowalczyk
Date: Sun, 19 Apr 2009 19:35
Date: Sun, 19 Apr 2009 19:35
18 lines
1473 bytes
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
Author: zielmicha
Date: Wed, 22 Apr 2009 08:13
Date: Wed, 22 Apr 2009 08:13
26 lines
2191 bytes
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
Author: Przemysław Kowalczyk
Date: Wed, 22 Apr 2009 16:34
Date: Wed, 22 Apr 2009 16:34
31 lines
1997 bytes
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
Author: Piotr Blaszynski
Date: Wed, 22 Apr 2009 16:58
Date: Wed, 22 Apr 2009 16:58
35 lines
2482 bytes
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