Poszukuję szybkiego skrótu z niskimi kolizjami zaimplementowanymi w JavaScript. Nie musi to być skrót kryptograficzny. Zasadniczo używam go jako sposobu sprawdzenia, czy dany plik został już załadowany (lub częściowo przesłany) na konto użytkownika, aby zaoszczędzić trochę czasu na przesyłaniu dużych plików (wideo).Szybka niska kolizja nie krypto-mieszania w JavaScript dla plików
Używam nowego interfejsu API pliku HTML5 do czytania w plasterkach pliku. Następnie przekazuję to do SparkMD5, aby podać mi skrót pliku. Podoba mi się fakt, że SparkMD5 pozwala mi tworzyć przyrostowe hash, więc nie muszę czytać całej rzeczy w pamięci.
Ogólnie rzecz biorąc, SparkMD5 działa na moje potrzeby, ale w przypadku dużych plików może zająć trochę czasu, aby uzyskać mój skrót (około 30 sekund dla pliku 300 MB). Idealnie chciałbym to zmniejszyć. Nie mam takiej wiedzy na temat funkcji mieszania, więc nie zamierzam przenosić czegoś i szukam idealnej biblioteki.
Jaki byłby akceptowalny czas? Możesz zajrzeć do CRC32, który ma być szybszy niż MD5, ale może nie być zauważalny i prawdopodobnie uzyskasz wyższy wskaźnik kolizji. – Graham
Tak, spojrzałem na CRC32, ale przeczytałem gdzieś, że współczynnik kolizji wynosi% 0,4. Nie jestem wystarczająco poinformowany, aby wiedzieć, czy to prawda, ale zdawało się, że inni wskazują, że miał on również wysoki wskaźnik kolizji. –
Aby odpowiedzieć na twoje pytanie, chciałbym, aby zajęło to zaledwie kilka sekund, nawet w przypadku pliku 1 GB. Nie wiem, czy to jest realistyczne. –