encryption.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. error_reporting(E_ALL);
  3. if (!extension_loaded('zip')) {
  4. dl('zip.so');
  5. }
  6. $name = __DIR__ . '/encrypted.zip';
  7. $pass = 'secret';
  8. $file = 'foo.php';
  9. echo "== Create with per file password\n";
  10. $zip = new ZipArchive;
  11. $zip->open($name, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE);
  12. $zip->addFile(__FILE__, $file);
  13. $zip->setEncryptionName($file, ZipArchive::EM_AES_256, $pass);
  14. $zip->close();
  15. echo "== Create with global password\n";
  16. $zip = new ZipArchive;
  17. $zip->open($name, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE);
  18. $zip->setPassword($pass);
  19. $zip->addFile(__FILE__, $file);
  20. $zip->setEncryptionName($file, ZipArchive::EM_AES_256);
  21. $zip->close();
  22. echo "== Stat\n";
  23. $zip->open($name);
  24. print_r($zip->statName($file));
  25. echo "== Read\n";
  26. $zip->setPassword($pass);
  27. $text = $zip->getFromName($file);
  28. printf("Size = %d\n", strlen($text));
  29. $zip->close();
  30. echo "== Stream with context\n";
  31. $ctx = stream_context_create(array(
  32. 'zip' => array(
  33. 'password' => $pass
  34. )
  35. ));
  36. $text = file_get_contents("zip://$name#$file", false, $ctx);
  37. printf("Size = %d\n", strlen($text));