Wykonuję kod przetwarzania obrazu, w którym pobieram niektóre obrazy (jako BufferedImage) z adresów URL i przesyłam je do procesora obrazu.Aby sprawdzić, czy dwa pliki graficzne są takie same, czy nie .Checksum lub Hash?
Chcę uniknąć przekazywania tego samego obrazu więcej niż raz do procesora obrazu (ponieważ operacja przetwarzania obrazu jest bardzo kosztowna). Punkty końcowe URL-i (jeśli są to te same obrazy) mogą się różnić, a więc mogę temu zapobiec przez adres URL. Więc planowałem zrobić sumę kontrolną lub haszować, aby zidentyfikować, czy kod znów napotyka ten sam obraz.
Dla md5 wypróbowałem Fast MD5 i wygenerowałem sześciokątną wartość sumy kontrolnej o długości 20K + dla obrazu (część próbki). Oczywiście przechowywanie tego skrótu znaków 20K + byłoby problemem, jeśli chodzi o przechowywanie bazy danych. Dlatego próbowałem CRC32 (z java.util.zip.CRC32). I wygenerował sumę kontrolną o znacznie mniejszej długości niż wartość skrótu.
Rozumiem sumę kontrolną i hasz dla różnych celów. W celu wyjaśnionym powyżej mogę po prostu użyć CRC32? Czy to rozwiąże ten cel, czy muszę spróbować czegoś więcej niż tych dwóch?
Dzięki Abi
[suma kontrolna i mieszania są takie same] (http://en.wikipedia.org/wiki/Checksum). Właściwie wystarczy spojrzeć na różne algorytmy. –
128-bitowy skrót MD5 powinien wystarczyć dla twojego celu. – Thor
BTW - MD5 należy utworzyć 128 bitową wartość hash natomiast CRC32 ma 32 bitów ... Co zrobiliście, aby wygenerować 20k + Szerokość kontrolne sześciokątne? –