/** * 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; } } }