# encodeString (Compartilhado)

> Codifica ou cifra um texto com um algoritmo: TEA, AES-128, RSA, Base64, Base32 ou zlib.

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

## Sintaxe

```lua
string|bool encodeString(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 codificar. |
| `options` | `table` | Uma tabela de opções: `key`, `variant` ou, para zlib, `format` (`"gzip"` por padrão, `"zlib"`, `"raw"` ou um windowBits), `compression` (0 a 9, 9 por padrão) e `strategy` (`"default"`, `"filtered"`, `"huffman"`, `"rle"`, `"fixed"`). *(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 resultado (com `aes128`, o texto cifrado e o vetor de inicialização de 16 bytes, que `decodeString` precisa). 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` precisa ter exatamente 16 bytes.                                                                 |
| `"rsa"`    | `key` traz a chave pública para codificar e a privada para decodificar.                                                     |
| `"base64"` | `variant = "URL"` opcional para o alfabeto de URL.                                                                          |
| `"base32"` | `variant = "HEX"` opcional para o alfabeto hexadecimal.                                                                     |
| `"zlib"`   | `format` opcional (`"gzip"` por padrão, `"zlib"`, `"raw"` ou windowBits), `compression` (`0`–`9`, padrão `9`) e `strategy`. |

## Exemplo

```lua
local key = "0123456789abcdef"
local cipher, iv = encodeString("aes128", "mensagem secreta", { key = key })
local plain = decodeString("aes128", cipher, { key = key, iv = iv })
```

## Veja também

- [decodeString (Compartilhado)](https://wiki.mymp.gg/pt/decodeString.md): Decodifica ou decifra um texto produzido por encodeString.
- [hash (Compartilhado)](https://wiki.mymp.gg/pt/hash.md): Calcula o hash de um texto: MD5, SHA-1, SHA-2 ou um HMAC.
