Beispiel #1
0
 protected static function aes_cbc_encrypt($string, $key, $iv)
 {
     $key_size = self::$key_size;
     if (!isset(self::$openssl_encrypt_exists)) {
         self::$openssl_encrypt_exists = function_exists('openssl_encrypt') && version_compare(PHP_VERSION, '5.3.3', '>=');
         // We need $iv parameter.
     }
     if (self::$openssl_encrypt_exists) {
         return openssl_encrypt($string, "aes-{$key_size}-cbc", $key, true, $iv);
     }
     // Info: http://www.chilkatsoft.com/p/php_aes.asp
     // http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
     $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
     if (mcrypt_generic_init($cipher, $key, $iv) != -1) {
         $encrypted = mcrypt_generic($cipher, self::pkcs7_pad($string));
         mcrypt_generic_deinit($cipher);
         mcrypt_module_close($cipher);
         return $encrypted;
     }
     return false;
 }
 protected static function openssl_encrypt_exists()
 {
     if (!isset(self::$openssl_encrypt_exists)) {
         self::$openssl_encrypt_exists = function_exists('openssl_encrypt') && version_compare(PHP_VERSION, '5.3.3', '>=');
     }
     return self::$openssl_encrypt_exists;
 }
 protected static function aes_cbc_encrypt($string, $key, $iv)
 {
     $key_size = self::$key_size;
     if (!isset(self::$openssl_encrypt_exists)) {
         self::$openssl_encrypt_exists = function_exists('openssl_encrypt') && version_compare(PHP_VERSION, '5.3.3', '>=');
         // We need $iv parameter.
     }
     if (self::$openssl_encrypt_exists) {
         return openssl_encrypt($string, "aes-{$key_size}-cbc", $key, true, $iv);
     }
     if (!isset(self::$mcrypt_exists)) {
         self::$mcrypt_exists = function_exists('mcrypt_encrypt');
     }
     if (self::$mcrypt_exists) {
         // Info: http://www.chilkatsoft.com/p/php_aes.asp
         // http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
         $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
         if (mcrypt_generic_init($cipher, $key, $iv) != -1) {
             $encrypted = mcrypt_generic($cipher, self::pkcs7_pad($string));
             mcrypt_generic_deinit($cipher);
             mcrypt_module_close($cipher);
             return $encrypted;
         }
         return false;
     }
     if (!isset(self::$openssl_cli_exists)) {
         self::$openssl_cli_exists = self::openssl_cli_exists();
     }
     if (self::$openssl_cli_exists) {
         $cmd = 'echo ' . self::escapeshellarg($string) . ' | openssl enc -e -a -A -aes-' . $key_size . '-cbc -K ' . self::strtohex($key) . ' -iv ' . self::strtohex($iv);
         exec($cmd, $output, $return);
         if ($return == 0 && isset($output[0])) {
             return base64_decode($output[0]);
         }
         return false;
     }
     trigger_error('GibberishAES: System requirements failure, please, check them.', E_USER_WARNING);
     return false;
 }