# decodeString (Compartido)

> Decodifica o descifra un texto producido por `encodeString`.

- **Plataforma**: MY Multiplayer (MYMP)
- **Tipo**: Función Lua
- **Lado**: Compartido
- **Categoría**: Datos y utilidades
- **URL**: https://wiki.mymp.gg/es/decodeString

## Sintaxis

```lua
string|bool decodeString(string algorithm, string data [, table options = nil, function callback = nil])
```

## Parámetros

| Nombre | Tipo | Descripción |
| --- | --- | --- |
| `algorithm` | `string` | `"tea"`, `"aes128"`, `"rsa"`, `"base64"`, `"base32"` o `"zlib"`. |
| `data` | `string` | El texto a decodificar. |
| `options` | `table` | Una tabla de opciones: `key`, `iv` (para `aes128`, lo que devolvió `encodeString`), `variant` o, para zlib, `format` (sin él, se detecta zlib o gzip). *(por defecto: `nil`)* |
| `callback` | `function` | Si se da, el trabajo corre en segundo plano y la función recibe el resultado (o `false`) cuando termina. *(por defecto: `nil`)* |

## Retorno

El texto original. Con `callback`, `true` de inmediato. `false` si las opciones no son válidas o la operación falló.

### Algoritmos

`options` es obligatorio para `"tea"`, `"aes128"` y `"rsa"`.

| Algoritmo  | Opciones                                                                                       |
| ---------- | ---------------------------------------------------------------------------------------------- |
| `"tea"`    | Clave en `key`; solo cuentan sus primeros 16 bytes.                                            |
| `"aes128"` | AES-128 en modo CTR; `key` (16 bytes) e `iv` (el IV de 16 bytes devuelto por `encodeString`).  |
| `"rsa"`    | `key` contiene la clave privada para decodificar (par de la clave pública usada al codificar). |
| `"base64"` | `variant = "URL"` opcional para el alfabeto de URL.                                            |
| `"base32"` | `variant = "HEX"` opcional para el alfabeto hexadecimal.                                       |
| `"zlib"`   | `format` opcional (sin él, zlib o gzip se detecta automáticamente).                            |

## Ejemplo

```lua
encodeString("zlib", fileGetContents("map.json"), { compression = 6 }, function(packed)
    if packed then
        print("comprimido a " .. #packed .. " bytes")
    end
end)
```

## Ver también

- [encodeString (Compartido)](https://wiki.mymp.gg/es/encodeString.md): Codifica o cifra un texto con un algoritmo: TEA, AES-128, RSA, Base64, Base32 o zlib.
- [hash (Compartido)](https://wiki.mymp.gg/es/hash.md): Calcula el hash de un texto: MD5, SHA-1, SHA-2 o un HMAC.
