По-видимому, функцию PHP hash()
можно вызывать с помощью алгоритмов crc32
и crc32b
? В чем разница между ними?
В чем разница между crc32 и crc32b?
Ответ 1
Два совершенно разных алгоритма. CRC32b представляет собой реализацию алгоритма согласованности, определяемого здесь, тогда как CRC32 представляет собой последовательность проверки кадров, определенную здесь. Это две совершенно разные вещи, хотя различия не часто бывают большими.
Один из способов проверить это:
<?php
echo hash("crc32", __FILE__)."<br/>";
echo hash("crc32b", __FILE__); ?>
Из-за их сходства начальные шестнадцатеричные значения будут относительно похожими.
Ответ 2
В соответствии с ответом apm на php.net: "Я подтвердил, что вывод" crc32 "- это алгоритм ITU I.363.5 (aka AAL5 CRC - популяризированный BZIP2, но также используемый в ATM-передачах - алгоритм то же, что и в POSIX 1003.2-1992 в Cksum, но это добавляет размер в CRC в конце для дополнительной меры). - crc32b - это 32-битная последовательность проверки кадров ITU V.42 (используется в Ethernet и популяризируется PKZip). Выход из этого CRC популяризируется в малоформатном формате Intel и будет производить cbf43926 в том же файле."
Полный комментарий: http://www.php.net/manual/en/function.hash-file.php#104836