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
Примечание: этот ответ рекомендует криптографический метод, который известен небезопасный, даже с хорошим паролем. см. ссылку из комментариев и 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 )
, Этот вид безопасности может быть поврежден грубой силой нападения, атаки с подбором по словарю и и т.д. Но дело не в этом легкий, особенно при выборе длинного и твердого для предположения пароля.
Все больше инструментов поддерживает зашифрованные 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 выпуск .