RarEntry::getCrc() returs a lowercase hex-string (e.g. 'bf6fa85c') the same as hash_... functions, using the same polynomial as 'crc32b' algorithm.
So, it can be used to check CRC after a stream unpacking:
<?php
$archive_name = 'archive.rar';
$entry_name = 'someentry.ext';
$rar = RarArchive::open($archive_name) or die("Cannot open archive $archive_name");
if ($rar->isBroken()) {
die("The archive is broken!");
}
$entry = $rar->getEntry($entry_name) or die("Cannot find entry $entry_name");
$stream = $entry->getStream() or die("Cannot open stream");
$crc = hash_init('crc32b'); // Initializing the hash function
while (!feof($stream)) {
$s = fread($stream, 8192);
if ($s === false) {
// Error reading (do not use fread(...) or die(...), because fread can return '0'!)
die('Error reading the compressed file.');
}
hash_update($crc, $s); // updating the hash
// ...
// Do whatever with the $s
}
fclose($stream);
$got_crc = hash_final($crc);
$need_crc = $entry->getCrc();
print("Got CRC: $got_crc" . PHP_EOL);
print("Need CRC: $need_crc" . PHP_EOL);
if ($got_crc != $need_crc) {
// rollback
print("Sorry guys, the file was incorrect!" . PHP_EOL);
} else {
print("Everything is ok" . PHP_EOL);
}
?>
PHP.mk документација
RarEntry::getCrc
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
rarentry.getcrc.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
rarentry.getcrc.php
RarEntry::getCrc
Референца за `rarentry.getcrc.php` со подобрена типографија и навигација.
RarEntry::getCrc
(PECL rar >= 0.1)
RarEntry::getCrc — Добијте CRC на записот
= NULL
Враќа хексадецимална текстуална репрезентација на CRC на записот во архивата.
Параметри
Оваа функција нема параметри.
Вратени вредности
Враќа CRC на записот во архивата или false при грешка.
Дневник на промени
| Верзија | = NULL |
|---|---|
| Враќа го името на записот како стринг, или | Овој метод сега враќа точни вредности за повеќетомни архиви. |
Белешки од корисници 1 белешка
aterlux на mail dot ru ¶
пред 7 години