예제 #1
0
$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";