# decodeString (Compartilhado)

> Decodifica ou decifra um texto produzido por `encodeString`.

- **Plataforma**: MY Multiplayer (MYMP)
- **Tipo**: Função Lua
- **Lado**: Compartilhado
- **Categoria**: Dados e utilidades
- **URL**: https://wiki.mymp.gg/pt/decodeString

## Sintaxe

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

## Parâmetros

| Nome | Tipo | Descrição |
| --- | --- | --- |
| `algorithm` | `string` | `"tea"`, `"aes128"`, `"rsa"`, `"base64"`, `"base32"` ou `"zlib"`. |
| `data` | `string` | O texto a decodificar. |
| `options` | `table` | Uma tabela de opções: `key`, `iv` (para `aes128`, o que `encodeString` devolveu), `variant` ou, para zlib, `format` (sem ele, detecta zlib ou gzip). *(padrão: `nil`)* |
| `callback` | `function` | Se dada, o trabalho roda em segundo plano e a função recebe o resultado (ou `false`) quando termina. *(padrão: `nil`)* |

## Retorno

O texto original. Com `callback`, `true` logo de cara. `false` se as opções são inválidas ou a operação falhou.

### Algoritmos

`options` é obrigatório para `"tea"`, `"aes128"` e `"rsa"`.

| Algoritmo  | Opções                                                                                        |
| ---------- | --------------------------------------------------------------------------------------------- |
| `"tea"`    | Chave em `key`; só os 16 primeiros bytes contam.                                              |
| `"aes128"` | AES-128 em modo CTR; `key` (16 bytes) e `iv` (o IV de 16 bytes devolvido por `encodeString`). |
| `"rsa"`    | `key` traz a chave privada para decodificar (par da chave pública usada na codificação).      |
| `"base64"` | `variant = "URL"` opcional para o alfabeto de URL.                                            |
| `"base32"` | `variant = "HEX"` opcional para o alfabeto hexadecimal.                                       |
| `"zlib"`   | `format` opcional (sem ele, zlib ou gzip é detectado automaticamente).                        |

## Exemplo

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

## Veja também

- [encodeString (Compartilhado)](https://wiki.mymp.gg/pt/encodeString.md): Codifica ou cifra um texto com um algoritmo: TEA, AES-128, RSA, Base64, Base32 ou zlib.
- [hash (Compartilhado)](https://wiki.mymp.gg/pt/hash.md): Calcula o hash de um texto: MD5, SHA-1, SHA-2 ou um HMAC.
