code: public static function decrypt($varValue, $strKey=null)
  	{
  		// Recursively decrypt arrays
  		if (\is_array($varValue))
  		{
  			foreach ($varValue as $k=>$v)
  			{
  				$varValue[$k] = static::decrypt($v);
  			}
  
  			return $varValue;
  		}
  		elseif ($varValue == '')
  		{
  			return '';
  		}
  
  		// Initialize the module
  		if (static::$resTd === null)
  		{
  			static::initialize();
  		}
  
  		$varValue = base64_decode($varValue);
  		$ivsize = mcrypt_enc_get_iv_size(static::$resTd);
  		$iv = substr($varValue, 0, $ivsize);
  		$varValue = substr($varValue, $ivsize);
  
  		if ($varValue == '')
  		{
  			return '';
  		}
  
  		if (!$strKey)
  		{
  			$strKey = System::getContainer()->getParameter('contao.encryption_key');
  		}
  
  		mcrypt_generic_init(static::$resTd, md5($strKey), $iv);
  		$strDecrypted = mdecrypt_generic(static::$resTd, $varValue);
  		mcrypt_generic_deinit(static::$resTd);
  
  		return $strDecrypted;
  	}
docs: Decrypt a value
  
  @param mixed  $varValue The value to decrypt
  @param string $strKey   An optional encryption key
  
  @return string The decrypted value