RarEntry::getCrc

(PECL rar >= 0.1)

RarEntry::getCrcВозвращает CRC элемента архива

Описание

public string RarEntry::getCrc ( void )

Возвращает шестнадцатеричное строковое представление CRC элемента архива.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает CRC элемента архива или FALSE в случае ошибки.

Список изменений

Версия Описание
2.0.0 Теперь этот метод возвращает корректные значения для многотомных архивов.

Коментарии

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($stream8192);
    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_crcPHP_EOL);
  print(
"Need CRC: $need_crcPHP_EOL);

  if (
$got_crc != $need_crc) {
   
// rollback
   
print("Sorry guys, the file was incorrect!" PHP_EOL);
  } else {
    print(
"Everything is ok" PHP_EOL);
  }
?>
2018-09-19 19:00:03
http://php5.kiev.ua/manual/ru/rarentry.getcrc.html

    Поддержать сайт на родительском проекте КГБ