1 File Encryption
Kato Twofold edited this page 2021-02-28 14:12:22 +02:00

The following is the example-file.php which you can run and test yourself, you can change the first define paramenters for the input/outputs

<?php

require("./lib.php");

/**
 * This is a simple example of how to encrypt files with the library
 * The following code will read the file in chunks instead of loading
 * the whole thing in memory, trying to keep the "Peak Memory Usage"
 * as low as possible.
*/

define("INPUT_FILE",      "./lib.php");
define("OUTPUT_FILE",     "./testdir/" . "./example.enc.php");
define("DEC_OUTPUT_FILE", "./testdir/" . "./example.dec.php");

// Make sure the testing folder exists
if ( !file_exists("./testdir") ) {
    mkdir("./testdir", 0777, true);
}


// Initialize the class
$lib = new kpcrypt();

// $lib->setEncryptionBlocks(128); // This will take ~10 times more time, but will use half as much memory.
// Really the best value is the default one.

$enc_start = round(microtime(true) * 1000);

// Encrypt the file
$lib->encryptFile(INPUT_FILE, OUTPUT_FILE);

$enc_end = round(microtime(true) * 1000) - $enc_start;
$dec_start = round(microtime(true) * 1000);

// Decrypt the file as well
$lib->decryptFile(OUTPUT_FILE, DEC_OUTPUT_FILE);

$dec_end = round(microtime(true) * 1000) - $dec_start;

/**
 * NOTE: You can also compress the output using gzip
*/

echo "\n\n";
echo "Input File Size: " . round(filesize(INPUT_FILE) / 1024 / 1024, 2) . "Mb";
echo "\n";
echo "Output File Size: " . round(filesize(OUTPUT_FILE) / 1024 / 1024, 2) . "Mb";
echo "\n";
echo "Peak Memory: " . memory_get_peak_usage() / 1024 / 1024 . "Mb"; // Check the memory in Mb
echo "\n";
echo "Encryption Time: $enc_end ms\n"; // 9700k = ~210ms ( 4Mb = 100ms )
echo "Decryption Time: $dec_end ms\n";
echo "\n";
$errors = $lib->getErrors();
echo "Errors: " . ( !empty($errors) ? "\n" . json_encode($errors, JSON_PRETTY_PRINT) : "No Errors!");