Говоря об этом: http://www.win -rar.com / index.php? Id = 24 & kb_article_id = 162
Я могу рассчитать правильный CRC заголовка архива (MAIN_HEAD), выполнив:
$crc = crc32(mb_substr($data, $blockOffset + 2, 11, '8bit'));
$crc = dechex($crc);
$crc = substr($crc, -4, 2) . substr($crc, -2, 2);
$crc = hexdec($crc);
В первой строке будет указано «CRC полей HEAD_TYPE to RESERVED2 », как указано в документации.Как я уже отметил, он прекрасно работает для заголовка архива.
Когда я пытаюсь вычислить CRC заголовка файла, он всегда выдает неправильный CRC по неизвестной причине.Я сделал, как сказано в документации - «CRC полей от HEAD_TYPE до FILEATTR », но это просто не работает.Я также пробовал разные варианты длины чтения на случай, если документация неверна и на самом деле это может быть от HEAD_TYPE до FILE_NAME .Все без успеха.
Кто-нибудь может дать мне подсказку?Я также проверил исходный код unrar, но он не делает меня умнее, вероятно, потому что я вообще не знаю языка C ...