Resultado Decodificado
Resultado Codificado
Sobre Base64
Base64 es un método de codificación que utiliza caracteres ASCII imprimibles de 7 bits. Se utiliza principalmente en correo electrónico para transferir datos de 8 bits a través de rutas de datos de 7 bits.
En Base64, los datos se dividen en grupos de 6 bits, que se convierten en caracteres alfanuméricos (A-Z, a-z, 0-9) y símbolos (+, /). Se convierten cada 4 caracteres, y si el final tiene menos de 4 caracteres, se rellena con el signo igual (=).
Además, RFC 1421 (PEM: Privacy-Enhanced Mail) especifica saltos de línea cada 64 caracteres, y RFC 2045 (MIME) especifica saltos de línea cada 76 caracteres.
La tabla de conversión a caracteres Base64 es la siguiente:
| Datos de 6 bits | Carácter Base64 |
|---|---|
| 000000 | A |
| 000001 | B |
| 000010 | C |
| 000011 | D |
| 000100 | E |
| 000101 | F |
| 000110 | G |
| 000111 | H |
| 001000 | I |
| 001001 | J |
| 001010 | K |
| 001011 | L |
| 001100 | M |
| 001101 | N |
| 001110 | O |
| 001111 | P |
| 010000 | Q |
| 010001 | R |
| 010010 | S |
| 010011 | T |
| 010100 | U |
| 010101 | V |
| 010110 | W |
| 010111 | X |
| 011000 | Y |
| 011001 | Z |
| 011010 | a |
| 011011 | b |
| 011100 | c |
| 011101 | d |
| 011110 | e |
| 011111 | f |
| 100000 | g |
| 100001 | h |
| 100010 | i |
| 100011 | j |
| 100100 | k |
| 100101 | l |
| 100110 | m |
| 100111 | n |
| 101000 | o |
| 101001 | p |
| 101010 | q |
| 101011 | r |
| 101100 | s |
| 101101 | t |
| 101110 | u |
| 101111 | v |
| 110000 | w |
| 110001 | x |
| 110010 | y |
| 110011 | z |
| 110100 | 0 |
| 110101 | 1 |
| 110110 | 2 |
| 110111 | 3 |
| 111000 | 4 |
| 111001 | 5 |
| 111010 | 6 |
| 111011 | 7 |
| 111100 | 8 |
| 111101 | 9 |
| 111110 | + |
| 111111 | / |
Por ejemplo, convertir "Hello" en Base64 da el siguiente resultado:
1. Convertir a representación binaria.
01001000 01100101 01101100 01101100 01101111 (Para US-ASCII / UTF-8)
2. Dividir en grupos de 6 bits. Si hay menos de 6 bits, rellenar el final con "0".
010010 000110 010101 101100 011011 000110 111100
3. Convertir a caracteres usando la tabla de conversión. Se convierten cada 4 caracteres, y si hay menos de 4 caracteres, se rellena el final con "=".
SGVs bG8=
4. Unir todos los caracteres para obtener el resultado de la conversión Base64.
SGVsbG8=
Formato de encabezado de mensaje MIME para correo electrónico (RFC 2047)
DenCode también soporta la decodificación del formato de encabezado de mensaje MIME (RFC 2047) como se muestra a continuación. Este formato se utiliza cuando el asunto o el destinatario del correo electrónico contienen caracteres no ASCII.
Subject: =?UTF-8?B?44K144Oz44OX44Or?=
El resultado después de la decodificación es el siguiente:
Subject: サンプル
JSON Web Token (RFC 7519)
JSON Web Token (JWT) es un formato de token que representa datos JSON de forma compacta mediante codificación Base64url. Se utiliza ampliamente para autenticación y autorización en aplicaciones web y está estandarizado en RFC 7519.
Un JWT consta de tres elementos separados por puntos (.).
<Header>.<Payload>.<Signature>
El papel de cada elemento es el siguiente.
| Elemento | Descripción |
|---|---|
| Header | Un objeto JSON con metadatos como el tipo de token (typ) y el algoritmo de firma (alg) |
| Payload | Un objeto JSON con información como el ID de usuario y la fecha de expiración |
| Signature | Datos de firma utilizados para detectar alteraciones en el encabezado y la carga útil |
El encabezado y la carga útil están codificados en Base64url. Base64url reemplaza "+" por "-" y "/" por "_", y omite el relleno "=" en comparación con el Base64 estándar (RFC 4648). Esto permite incluirlos de forma segura en URLs y encabezados HTTP.
Por ejemplo, al decodificar el siguiente JWT se obtienen el encabezado y la carga útil como JSON.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Los principales campos (claims) contenidos en el encabezado y la carga útil son los siguientes.
| Campo | Nombre | Descripción |
|---|---|---|
| alg | Algorithm | Algoritmo utilizado para la firma o cifrado (p. ej. HS256, RS256, ES256) |
| typ | Type | Tipo de token (normalmente "JWT") |
| cty | Content Type | Tipo de contenido de la carga útil ("JWT" para JWTs anidados) |
| kid | Key ID | Identificador de la clave utilizada para la verificación de firma |
| jku | JWK Set URL | URL del conjunto JWK utilizado para la verificación de firma |
| x5u | X.509 URL | URL de la cadena de certificados X.509 utilizada para la verificación de firma |
| x5t | X.509 Certificate SHA-1 Thumbprint | Huella digital SHA-1 del certificado X.509 utilizado para la verificación de firma |
| Campo | Nombre | Descripción |
|---|---|---|
| iss | Issuer | Emisor del token |
| sub | Subject | Sujeto del token (p. ej. ID de usuario) |
| aud | Audience | Destinatario del token |
| exp | Expiration Time | Tiempo de expiración del token (marca de tiempo Unix) |
| nbf | Not Before | Tiempo antes del cual el token no es válido (marca de tiempo Unix) |
| iat | Issued At | Tiempo en que se emitió el token (marca de tiempo Unix) |
| jti | JWT ID | Identificador único del token |