<?php require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/shared-data.php'; $pkcs7 = new phpaes\PKCS7(); //$pkcs7 = new phpaes\NoPad(); $aescbc = new phpaes\AES_CBC_Mcrypt($pkcs7); $util = new phpaes\Util(); foreach ($keys as $keylen => $key) { $aescbc->setKey($key); $aescbc->setIv($iv); foreach ($testTexts as $plainText) { $cipherText = $aescbc->encrypt($plainText); $padded = $pkcs7->pad($plainText, 16); $decodedText = $aescbc->decrypt($cipherText); echo "-------------------------------------------------------\n"; echo " Key: ({$keylen}) {$key}\n"; echo " Plaintext: {$plainText}\n"; echo " Plaintext (bytes): " . $util->bytestring($plainText) . "\n"; echo " Padded (bytes): " . $util->bytestring($padded) . "\n"; echo " Padded (hex): " . bin2hex($padded) . "\n"; echo " Padded (len): " . strlen($padded) . "\n"; echo "Ciphertext (bytes): " . $util->bytestring($cipherText) . "\n"; echo " Ciphertext (hex): " . bin2hex($cipherText) . "\n"; echo " Ciphertext (len): " . strlen($cipherText) . "\n"; echo " Decryptedtext: {$decodedText}\n"; } }
$keys = array('128' => '1234567890123456', '192' => '123456789012345612345678', '256' => '12345678901234561234567890123456'); $itterations = 500; $results = array(); // array('ext', 'keylen', 'textsize', '(en/de)code', 'ops/sec') $aesMcrypt = new phpaes\AES_CBC_Mcrypt(new phpaes\PKCS7()); $aesOpenssl = new phpaes\AES_CBC_OpenSSL(); foreach (array('mcrypt' => $aesMcrypt, 'openssl' => $aesOpenssl) as $methodName => $method) { /** @var phpaes\AES $method */ foreach ($texts as $textDesc => $secretText) { foreach ($keys as $keyLen => $key) { $method->setKey($key); $method->setIv('1234567890123456'); // non-real iv, but ok for demo $s = microtime(true); for ($i = $itterations; $i > 0; $i--) { $method->encrypt($secretText); } $e = microtime(true); $results[] = array('ext' => $methodName, 'keylen' => $keyLen, 'textsize' => $textDesc, '(en/de)code' => 'enc', 'ops/sec' => number_format($itterations / ($e - $s), 5, '.', '')); $etext = $method->encrypt($secretText); $s = microtime(true); for ($i = $itterations; $i > 0; $i--) { $method->decrypt($etext); } $e = microtime(true); $results[] = array('ext' => $methodName, 'keylen' => $keyLen, 'textsize' => $textDesc, '(en/de)code' => 'dec', 'ops/sec' => number_format($itterations / ($e - $s), 5, '.', '')); } } } $util = new phpaes\Util(); echo "Results:\n" . $util->renderTable($results) . "\n";