2013-04-07 37 views
12

Podobno funkcja PHP hash() może być wywołana z algorytmami crc32 i crc32b? Jaka jest różnica między nimi?Jaka jest różnica między crc32 i crc32b?

+0

Istnieje kilku użytkowników wyjaśniających to tutaj: http://www.php.net/manual/en/function.hash-file.php#104836 – Uby

+2

google mi to - shld pomóc http: // www .pal-blog.de/entwicklung/perl/2012/crc32-vs-crc32b.html – Dinesh

Odpowiedz

3

Jak na odpowiedź apm na php.net: "Sprawdziłem, że wyjściem" crc32 "jest algorytm IT.3 I.333,5 (znany również jako AAL5 CRC - spopularyzowany przez BZIP2, ale również używany w transmisjach ATM - algorytm jest taki sam, jak w POSIX 1003.2-1992 w Cksum, ale to dodaje rozmiar do CRC na końcu dla dodatkowego pomiaru) - Crc32b jest 32-bitową sekwencją sprawdzania ramki ITU V.42 (używaną w sieci Ethernet i spopularyzowany przez PKZip) .Produkt z tego CRC jest spopularyzowany w małym endianowskim formacie Intela i produkuje cbf43926 na tym samym pliku. "

Pełen komentarz: http://www.php.net/manual/en/function.hash-file.php#104836

6

Dwie zupełnie różne algorytmy. CRC32b jest implementacją algorytmu spójności zdefiniowanego jako here, natomiast CRC32 jest sekwencją sprawdzania ramki zdefiniowaną jako here. To dwie zupełnie różne rzeczy, choć różnice nie są często duże.

Jednym ze sposobów, aby to sprawdzić:

<?php 
echo hash("crc32", __FILE__)."<br/>"; 
echo hash("crc32b", __FILE__); ?> 

Ze względu na ich podobieństwo, wyjściowe wartości hex będzie stosunkowo podobne.

+0

Czy istnieje powód, aby wybrać jeden z drugiego? – user2045006

+2

@ user2045006: Nie. Różnią się one jedynie szczegółami realizacji i historycznymi zastosowaniami. Jeden działa z strumieniami, drugi z ramkami. W znacznej większości przypadków można założyć, że jest równoważny pod względem wydajności. –

Powiązane problemy