2013-04-07 10 views
12

Apparentemente la funzione PHP hash() può essere richiamata con gli algoritmi crc32 e crc32b? Qual'è la differenza tra loro?Qual è la differenza tra crc32 e crc32b?

+0

Ci sono un paio di utenti che lo spiegano qui: http://www.php.net/manual/en/function.hash-file.php#104836 – Uby

+2

google mi ha dato questo-- help shld http: // www .pal-blog.de/entwicklung/perl/2012/crc32-vs-crc32b.html – Dinesh

risposta

3

Come risposta da apm su php.net: "Ho verificato che l'output di" crc32 "è l'algoritmo ITU I.363.5 (noto anche come AAL5 CRC - reso popolare da BZIP2 ma utilizzato anche nelle trasmissioni ATM - l'algoritmo è la stessa di POSIX 1003.2-1992 in Cksum ma che inserisce le dimensioni nel CRC alla fine per misure extra.) - crc32b è la sequenza di controllo fotogrammi a 32 bit di ITU V.42 (utilizzata in Ethernet e reso popolare da PKZip). L'output di questo CRC è reso popolare nel formato Intel little endian e produrrebbe cbf43926 sullo stesso file. "

Il commento completo: http://www.php.net/manual/en/function.hash-file.php#104836

6

Due algoritmi completamente diversi. CRC32b è un'implementazione dell'algoritmo di coerenza definito here, mentre CRC32 è la sequenza di controllo frame definita here. Sono due cose completamente diverse, anche se le differenze non sono spesso grandi.

Un modo per controllare questo:

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

causa della loro somiglianza, i valori iniziali esadecimali sarà relativamente simili.

+0

C'è un motivo per sceglierne uno rispetto all'altro? – user2045006

+2

@ user2045006: No. Differiscono solo nei dettagli di implementazione e negli usi storici. Uno lavora con i flussi, l'altro con i frame. Per la grande maggioranza dei casi, si può ritenere che questo sia equivalente nelle prestazioni. –

Problemi correlati