Пример #1
0
 /**
  * Decrypt data after encryption
  *
  * @param string $data
  * @return mixed
  */
 public static function decrypt($data)
 {
     // Don't do anything with empty data
     $data = trim($data);
     if (empty($data) || is_string($data) == false && is_numeric($data) == false) {
         return null;
     }
     // Detect data that is not encrypted
     $data = urldecode($data);
     if (strstr($data, '|=|') == false) {
         return $data;
     }
     $array = explode('|=|', $data);
     $encrypted = MageBridgeEncryptionHelper::base64_decode($array[0], true);
     $key = MageBridgeEncryptionHelper::getSaltedKey($array[1]);
     // PHP 5.5 version
     if (version_compare(PHP_VERSION, '5.5.0') >= 0) {
         try {
             $td = mcrypt_module_open(MCRYPT_CAST_256, '', 'ecb', '');
             $iv = substr($key, 0, mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB));
             mcrypt_generic_init($td, $key, $iv);
             $decrypted = mdecrypt_generic($td, $encrypted);
             $decrypted = trim($decrypted);
             return $decrypted;
         } catch (Exception $e) {
             Mage::getSingleton('magebridge/debug')->error("Error while decrypting: " . $e->getMessage());
             return null;
         }
     } else {
         try {
             $iv = substr($key, 0, mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB));
             $decrypted = @mcrypt_cfb(MCRYPT_CAST_256, $key, $encrypted, MCRYPT_DECRYPT, $iv);
             $decrypted = trim($decrypted);
             return $decrypted;
         } catch (Exception $e) {
             Mage::getSingleton('magebridge/debug')->error("Error while decrypting: " . $e->getMessage());
             return null;
         }
     }
 }