# encodeString (Compartido)

> Codifica o cifra un texto con un algoritmo: TEA, AES-128, RSA, Base64, Base32 o zlib.

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

## Sintaxis

```lua
string|bool encodeString(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 codificar. |
| `options` | `table` | Una tabla de opciones: `key`, `variant` o, para zlib, `format` (`"gzip"` por defecto, `"zlib"`, `"raw"` o un windowBits), `compression` (0 a 9, 9 por defecto) y `strategy` (`"default"`, `"filtered"`, `"huffman"`, `"rle"`, `"fixed"`). *(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 resultado (con `aes128`, el texto cifrado y el vector de inicialización de 16 bytes que necesita `decodeString`). 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` debe tener exactamente 16 bytes.                                                                      |
| `"rsa"`    | `key` contiene la clave pública para codificar y la privada para decodificar.                                                    |
| `"base64"` | `variant = "URL"` opcional para el alfabeto de URL.                                                                              |
| `"base32"` | `variant = "HEX"` opcional para el alfabeto hexadecimal.                                                                         |
| `"zlib"`   | `format` opcional (`"gzip"` por defecto, `"zlib"`, `"raw"` o windowBits), `compression` (`0`–`9`, por defecto `9`) y `strategy`. |

## Ejemplo

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

## Ver también

- [decodeString (Compartido)](https://wiki.mymp.gg/es/decodeString.md): Decodifica o descifra un texto producido por encodeString.
- [hash (Compartido)](https://wiki.mymp.gg/es/hash.md): Calcula el hash de un texto: MD5, SHA-1, SHA-2 o un HMAC.
