Resultado da Decodificação
Resultado da Codificação
Sobre Base64
Base64 é um método de codificação que utiliza caracteres ASCII imprimíveis de 7 bits. É usado principalmente em e-mail para transferir dados de 8 bits através de um caminho de dados de 7 bits.
No Base64, os dados são divididos em 6 bits cada e convertidos em caracteres alfanuméricos (A-Z, a-z, 0-9) e símbolos (+, /). A conversão é feita a cada 4 caracteres, e se o final for menor que 4 caracteres, é preenchido com o sinal de igual (=).
Além disso, a RFC 1421 (PEM: Privacy-Enhanced Mail) especifica uma quebra de linha a cada 64 caracteres, e a RFC 2045 (MIME) a cada 76 caracteres.
A tabela de conversão para caracteres Base64 é a seguinte:
| Dados de 6 bits | Caractere 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 exemplo, converter "Hello" em Base64 resulta no seguinte:
1. Converta para representação binária.
01001000 01100101 01101100 01101100 01101111 (No caso de US-ASCII / UTF-8)
2. Divida a cada 6 bits. Se for menor que 6 bits, preencha o final com "0".
010010 000110 010101 101100 011011 000110 111100
3. Converta para caracteres usando a tabela de conversão. Converta a cada 4 caracteres, e se for menor que 4 caracteres, preencha o final com "=".
SGVs bG8=
4. Conecte todos os caracteres para obter o resultado da conversão Base64.
SGVsbG8=
Formato de cabeçalho de mensagem MIME de e-mail (RFC 2047)
O DenCode também suporta a decodificação do seguinte formato de cabeçalho de mensagem MIME (RFC 2047). Este formato é usado quando o assunto ou destinatário do e-mail contém caracteres não ASCII.
Subject: =?UTF-8?B?44K144Oz44OX44Or?=
O resultado após a decodificação é o seguinte:
Subject: サンプル
JSON Web Token (RFC 7519)
JSON Web Token (JWT) é um formato de token que representa dados JSON de forma compacta usando codificação Base64url. É amplamente utilizado para autenticação e autorização em aplicações web e é padronizado na RFC 7519.
Um JWT é composto por três elementos separados por pontos (.).
<Header>.<Payload>.<Signature>
O papel de cada elemento é o seguinte.
| Elemento | Descrição |
|---|---|
| Header | Um objeto JSON contendo metadados como o tipo de token (typ) e o algoritmo de assinatura (alg) |
| Payload | Um objeto JSON contendo informações como ID do usuário e tempo de expiração |
| Signature | Dados de assinatura utilizados para detectar adulteração do cabeçalho e da carga útil |
O cabeçalho e a carga útil são codificados em Base64url. O Base64url substitui "+" por "-" e "/" por "_", e omite o preenchimento "=" em comparação com o Base64 padrão (RFC 4648). Isso permite incluí-los com segurança em URLs e cabeçalhos HTTP.
Por exemplo, ao decodificar o seguinte JWT, obtém-se o cabeçalho e a carga útil em formato JSON.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Os principais campos (claims) contidos no cabeçalho e na carga útil são os seguintes.
| Campo | Nome | Descrição |
|---|---|---|
| alg | Algorithm | Algoritmo utilizado para assinatura ou criptografia (ex.: HS256, RS256, ES256) |
| typ | Type | Tipo de token (geralmente "JWT") |
| cty | Content Type | Tipo de conteúdo da carga útil ("JWT" para JWTs aninhados) |
| kid | Key ID | Identificador da chave utilizada para verificação de assinatura |
| jku | JWK Set URL | URL do conjunto JWK utilizado para verificação de assinatura |
| x5u | X.509 URL | URL da cadeia de certificados X.509 utilizada para verificação de assinatura |
| x5t | X.509 Certificate SHA-1 Thumbprint | Impressão digital SHA-1 do certificado X.509 utilizado para verificação de assinatura |
| Campo | Nome | Descrição |
|---|---|---|
| iss | Issuer | Emissor do token |
| sub | Subject | Sujeito do token (ex.: ID do usuário) |
| aud | Audience | Destinatário do token |
| exp | Expiration Time | Tempo de expiração do token (timestamp Unix) |
| nbf | Not Before | Tempo antes do qual o token não é válido (timestamp Unix) |
| iat | Issued At | Tempo de emissão do token (timestamp Unix) |
| jti | JWT ID | Identificador único do token |