В чем разница между crc32 и crc32b?

Видимо функция PHP hash() можно вызвать с помощью алгоритмов crc32 а также crc32b? В чем разница между ними?

2 ответа

Два совершенно разных алгоритма. CRC32b является реализацией алгоритма согласованности, определенного здесь, тогда как CRC32 является определенной здесь проверочной последовательностью кадров. Это две совершенно разные вещи, хотя различия не часто бывают большими.

Один из способов проверить это:

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

Из-за их сходства начальные шестнадцатеричные значения будут относительно похожими.

Согласно ответу apm на php.net: "Я проверил, что выводом"crc32"является алгоритм ITU I.363.5 (он же CRC AAL5 - популяризированный 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

Разница между crc32 и crc32b объясняется на странице руководства mhash. crc32 - это тот, который используется в Ethernet, а crc32b - тот, который используется в zip, png... Они различаются в используемой таблице.

цитата взята с php.net

Другие вопросы по тегам