> For the complete documentation index, see [llms.txt](https://cryptography.mrw0l05zyn.cl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cryptography.mrw0l05zyn.cl/encoding-codificacion/base64.md).

# Base64

## Descripción

Base64 convierte cualquier dato binario en una secuencia codificada de caracteres imprimibles, lo que permite transferir estos datos a través de prácticamente cualquier canal y protocolo. Base64 recibe su nombre por el uso de 64 caracteres.

| Índice   | Caracteres                 |
| -------- | -------------------------- |
| 0 al 25  | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| 26 al 51 | abcdefghijklmnopqrstuvwxyz |
| 52 al 61 | 0123456789                 |
| 62       | +                          |
| 63       | /                          |

El carácter `=` también podría usarse en la representación visual de esta codificación, pero solo al final de una cadena para relleno. Los caracteres `a-z` y `A-Z` se consideran por separado debido a que Base64 distingue entre mayúsculas y minúsculas.

Base64 convierte cada tres bytes de datos binarios en cuatro caracteres Base64. Cada secuencia de tres bytes se denomina bloque. 3x8 bytes de entrada producen 4x6 bytes Base64 de salida. Cuando la entrada es indivisible por seis, se agregan ceros al final de la cadena de entrada para rellenarla, de modo que se vuelva divisible.&#x20;

La salida Base64 contendrá el carácter `=` si el último bloque de entrada fue solo de dos bytes (sin los ceros agregados). Contendrá `==` si el último bloque de entrada fue solo un byte.&#x20;

Las cadenas codificadas en Base64 siempre son más largas que el texto original porque los bytes regulares tienen ocho bits y los caracteres Base64 solo tienen seis bits de datos.

```
* -----------------*---------------*---------------*---------------*
| Texto de entrada |       A       |       A       |       A       |
*------------------*---------------*---------------*---------------*
| ASCII            |       65      |       65      |       65      |
*------------------*---------------*---------------*---------------*
| Bits             |0|1|0|0|0|0|0|1|0|1|0|0|0|0|0|1|0|1|0|0|0|0|0|1|
*------------------*---------------*---------------*---------------*
| Índice Base64    |     16    |     20    |     5     |     1     |
*------------------*-----------*-----------*-----------*-----------*
| Valor Base64     |     Q     |      U    |     F     |     B     |
*------------------*-----------*-----------*-----------*-----------*
```

## Conversiones

Conversión de texto a Base64.

```shell
echo -n "<text>" | base64
echo -n "A" | base64
```

Conversión de Base64 a texto.

```shell
echo -n "<base64>" | base64 -d
echo -n "QQ==" | base64 -d
```

Conversión de archivo a Base64.

```shell
base64 -w 0 <file>
```
