Создайте зашифрованный архив zip с PHP

  int a = 10;
  a = ++a * ( ++a + 5);

выше вида выражений всегда оцениваются слева направо так: C или JAVA

в этом случае он решает аналогично 11 * (12 + 5), что приводит к 11 * 17 = 187 // wrt java

, но если он решает одно и то же выражение по C-language

, тогда ответ изменяется как способ оценки изменений

в c происходит первый предварительный приращение / предварительный декремент, поэтому, если в выражении есть «N», то в выражении нет inc inc / dec, тогда inc / dec произойдет сначала «N» no times

то одно и то же значение будет заменено в каждом вхождении переменной в выражение и вычисляется значение выражения и после этого происходит приращение / декремент post

, т.е. a увеличивается с шагом 11, затем снова 12, так как есть два приращение для a в выражении, а затем выражение оценивается как

12 * (12 + 5) = 12 * 17 = 204 // wrt C-language

22
задан Dan McClain 10 June 2009 в 13:44
поделиться

2 ответа

Примечание: этот ответ рекомендует криптографический метод, который известен небезопасный, даже с хорошим паролем. см. ссылку из комментариев и QA Winzip на AES. Поддержка в - php шифрование zip AES прибывает с php 7.2 libzip 1.2.0 ), что означает, что этот ответ скоро устареет также. До тех пор видят этот ответ для того, как обратиться 7z вместо команды zip, которая поддерживает Шифрование AES winzip .

можно использовать это:

<?php echo system('zip -P pass file.zip file.txt'); ?>

то, Где передача является паролем и file.txt, будет заархивировано в file.zip. Это должно работать над Windows и Linux, просто необходимо получить бесплатную версию zip для Windows ( http://www.info-zip.org/Zip.html#Win32 )

, Этот вид безопасности может быть поврежден грубой силой нападения, атаки с подбором по словарю и и т.д. Но дело не в этом легкий, особенно при выборе длинного и твердого для предположения пароля.

18
ответ дан ftrotter 29 November 2019 в 05:16
поделиться

Все больше инструментов поддерживает зашифрованные AES zip-файлы. Это работает, это безопасно.

EDIT2: можно использовать DotNetZip от PHP для динамичной генерации зашифрованных AES архивов zip от PHP. DotNetZip является библиотекой.NET, которая разработана для языков.NET (C#, VB, и т.д.). Это работает только в Windows: (. Но DotNetZip делает AES, и это свободно, и он работает от PHP.

Это - код, который я использовал. (PHP v5.2.9 на Win32)

<?php
try
{
  $fname = "zip-generated-from-php-" . date('Y-m-d-His') . ".zip";
  $zipOutput = "c:\\temp\\" . $fname;
  $zipfact = new COM("Ionic.Zip.ZipFile");
  $zip->Name = $zipOutput;
  $dirToZip= "c:\\temp\\psh";
  # Encryption:  3 => 256-bit AES.  
  #     2 => 128-bit AES.  
  #     1 => PKZIP (Weak).  
  #     0 => None
  $zip->Encryption = 3;
  $zip->Password = "AES-Encryption-Is-Secure";
  $zip->AddDirectory($dirToZip);
  $zip->Save();
  $zip->Dispose();

  if (file_exists($zipOutput))
  {
    header('Cache-Control: no-cache, must-revalidate');
    header('Content-Type: application/x-zip'); 
    header('Content-Disposition: attachment; filename=' . $fname);
    header('Content-Length: ' . filesize($zipOutput));
    readfile($zipOutput);
    unlink($zipOutput);
  }
  else 
  {
    echo '<html>';
    echo '  <head>';
    echo '  <title>Calling DotNetZip from PHP through COM</title>';
    echo '  <link rel="stylesheet" href="basic.css"/>';
    echo '  </head>';
    echo '<body>';
    echo '<h2>Whoops!</h2>' . "<br/>\n";
    echo '<p>The file was not successfully generated.</p>';
    echo '</body>';
    echo '</html>';
  } 
}
catch (Exception $e) 
{
    echo '<html>';
    echo '  <head>';
    echo '  <title>Calling DotNetZip from PHP through COM</title>';
    echo '  <link rel="stylesheet" href="basic.css"/>';
    echo '  </head>';
    echo '<body>';
    echo '<h2>Whoops!</h2>' . "<br/>\n";
    echo '<p>The file was not successfully generated.</p>';
    echo '<p>Caught exception: ',  $e->getMessage(), '</p>', "\n";
    echo '<pre>';
    echo $e->getTraceAsString(), "\n";
    echo '</pre>';
    echo '</body>';
    echo '</html>';
}

?>

я должен был изменить DotNetZip, чтобы заставить его работать с PHP: Я должен был сделать чтение-запись свойства Name, и я должен был сделать его COM-вызываемым. Это изменение сначала доступно в v1.8.2.3 выпуск .

0
ответ дан Cheeso 29 November 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: