0

Resultado da Decodificação

Base64

Resultado da Codificação

Base64
Quebra de Linha

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 bitsCaractere Base64
000000A
000001B
000010C
000011D
000100E
000101F
000110G
000111H
001000I
001001J
001010K
001011L
001100M
001101N
001110O
001111P
010000Q
010001R
010010S
010011T
010100U
010101V
010110W
010111X
011000Y
011001Z
011010a
011011b
011100c
011101d
011110e
011111f
100000g
100001h
100010i
100011j
100100k
100101l
100110m
100111n
101000o
101001p
101010q
101011r
101100s
101101t
101110u
101111v
110000w
110001x
110010y
110011z
1101000
1101011
1101102
1101113
1110004
1110015
1110106
1110117
1111008
1111019
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.

ElementoDescrição
HeaderUm objeto JSON contendo metadados como o tipo de token (typ) e o algoritmo de assinatura (alg)
PayloadUm objeto JSON contendo informações como ID do usuário e tempo de expiração
SignatureDados 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.

CampoNomeDescrição
algAlgorithmAlgoritmo utilizado para assinatura ou criptografia (ex.: HS256, RS256, ES256)
typTypeTipo de token (geralmente "JWT")
ctyContent TypeTipo de conteúdo da carga útil ("JWT" para JWTs aninhados)
kidKey IDIdentificador da chave utilizada para verificação de assinatura
jkuJWK Set URLURL do conjunto JWK utilizado para verificação de assinatura
x5uX.509 URLURL da cadeia de certificados X.509 utilizada para verificação de assinatura
x5tX.509 Certificate SHA-1 ThumbprintImpressão digital SHA-1 do certificado X.509 utilizado para verificação de assinatura
CampoNomeDescrição
issIssuerEmissor do token
subSubjectSujeito do token (ex.: ID do usuário)
audAudienceDestinatário do token
expExpiration TimeTempo de expiração do token (timestamp Unix)
nbfNot BeforeTempo antes do qual o token não é válido (timestamp Unix)
iatIssued AtTempo de emissão do token (timestamp Unix)
jtiJWT IDIdentificador único do token