Jak odró?żnić dwie wersje pliku

0

Witam.
Od dłuższego czasu zajmuję się tłumaczeniem aplikacji Winamp na język polski. Co jakiś czas wychodzą nowe wersje programu, zatem trzeba zrobić nowe spolszczenie. Mam takie pytanie. W jaki sposób można na 100% stwierdzić, że plik nowszej wersji np. Plik2.exe zmienił się w stosunku do pliku z pakietu starszej wersji, np Plik1.exe.

Czy o tym, że dany plik został zmieniony (i nie chodzi tylko o zasoby, ale jakaś część kodu) świadczy zmiana rozmiaru w bajtach, czy może zmiana daty modyfikacji pliku? (te informacje mam, bo napisałem soie program). Czy może należy sprawdzać sumy kontrolne CRC (nie wiem jak :( ).
Jak to jest z tym?

Proszę o rade. Pytanie wynika z tego, że nie chce mi się poprawiać wszystkich plików, skoro niektóre z nich mogły się w ogóle nie zmienić.

Pozdr, Pepe

0

Hmm... "Ręcznie" najprościej poleceniem dosowym cmp (nie wiem, czy to w nowszych windowsach jest, ale raczej tak). Najprostsza metoda. Porównywanie innymi jest albo niedokładne, albo wolniejsze.

0

Ja bym sprawdzał sumę kontrolną. Czy to CRC czy MD5. W FAQ czy artach jest coś o CRC.

0

Tak, ale zawsze jest prawdopodobieństwo, że suma kontrolna będzie taka sama dla dwóch różnych plików (małe, ale zawsze), a i tak musisz przeczytać cały plik, do tego przeliczyć na sumę kontrolną i potem dopiero porównywać. A tak to bezpośrednio porównujesz dwa pliki, bajt po bajcie i jak się zgadza, to wiesz na 100%, że są identyczne. A i tak jest szybciej.

0

Tak, ale zawsze jest prawdopodobieństwo, że suma kontrolna będzie taka sama dla dwóch różnych plików (małe, ale zawsze)

md5 ma 128 bitów, więc prawdopodobieństwo o którym mówisz wynosi 3*10^-39, więc już nie przesadzaj. mnóstwo programów p2p działa na zasadzie kodów kontrolnych i wszystko jest ok.

a i tak musisz przeczytać cały plik, do tego przeliczyć na sumę kontrolną i potem dopiero porównywać. A tak to bezpośrednio porównujesz dwa pliki, bajt po bajcie i jak się zgadza, to wiesz na 100%, że są identyczne. A i tak jest szybciej.

Czyli twierdzisz, że przeczytanie dwóch plików jest szybsze niż przeczytanie i przehashowanie jednego i porównanie z kiedyśtam raz policzonym hashem oryginalnego pliku? :|

0

No chyba, że w ten sposób myśleć. Ja myślałem o takiej sytuacji, że ktoś ma dwa pliczki i chce je porównać. A jak chodzi o MD5, to dla pliku, który ma powiedzmy 1 MB, istnieje 1MB/128b czyli 65536 różnych plików o tej samej sumie kontrolnej, oczywiście średnio. Więc nie wiem, czy to tak strasznie małe prawdopodobieństwo... Oczywiście biorąc pod uwagę ilość różnych możliwych plików o tym rozmiarze, to jest to mało, ale biorąc pod uwagę fakt, że ktoś chce mieć pewność identyczności, to nie wiem, czy to jest wystarczające. A systemy P2P wykorzystują MD5, bo chyba nie będą przesyłać dwa razy pliku, żeby się upewnić, czy się dobrze przesłał. Po prostu byłoby to wysoce nieekonomiczne. Podobnie płytki instalacyjne linux'a mają podaną swoją sumę kontrolną, bo nikt nie będzie nosił dwóch kopii płytki tylko po to, by móc je ze sobą porównać i się upewnić, że wszystko działa. Ale przy porównywaniu dwóch plików lokalnie liczenie ich sumy kontrolnej nie jest takie opłacalne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1