codificar | decodificar | comprimir

> base64url | jwt | url-segura <

// Base64url - variante de Base64 segura para URLs e nomes de ficheiro, sem padding

[URL-SAFE]

Compatível com URL

Sem caracteres especiais de URL – seguro para parâmetros de consulta e caminhos.

[JWT]

Padrão JWT

Utilizado em JSON Web Tokens e nas especificações OAuth 2.0.

[NO-PADDING]

Padding opcional

Os caracteres de padding (=) podem ser omitidos para URLs mais limpas.

>> informação técnica

Como funciona o Base64url:

Base64url é uma variante de Base64 que substitui "+" por "-" e "/" por "_", tornando a saída segura para URLs e nomes de ficheiro. O carácter de padding "=" é frequentemente omitido, pois pode causar problemas em URLs.

Comparação:

Base64: SGVsbG8+Pw== Base64url: SGVsbG8-Pw

Por que usar Base64url:

  • >Tokens JWT
  • >Fluxos OAuth 2.0
  • >Parâmetros de consulta em URL
  • >Codificação de nomes de ficheiro
  • >Assinaturas de APIs web

>> perguntas frequentes

O que é Base64url?

Base64url é uma variante da codificação Base64 segura para URLs e nomes de ficheiro. Substitui "+" por "-", "/" por "_" e pode remover os caracteres de padding "=", evitando problemas de codificação em URLs.

Por que não usar Base64 normal em URLs?

A Base64 normal utiliza os caracteres "+", "/" e "=", que têm significados especiais em URLs. "+" pode ser interpretado como espaço, "/" é um separador de caminho e "=" é usado para parâmetros, o que pode causar problemas de análise.

Onde o Base64url é utilizado?

Base64url é amplamente utilizado em JWT (JSON Web Tokens), códigos de autorização OAuth 2.0, assertions SAML e em qualquer API que precise enviar dados binários em URLs ou cabeçalhos HTTP.

O padding é obrigatório no Base64url?

Não. O padding no Base64url é opcional. Muitas implementações o omitem porque o comprimento pode ser calculado. As especificações de JWT exigem explicitamente a ausência de padding para URLs mais limpas.

// Diferenças em relação ao Base64

Base64Base64url
+-
/_
=—

// Base64url no código

JavaScript   btoa(s).replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'')
Node.js      Buffer.from(s).toString('base64url')
Python       base64.urlsafe_b64encode(b).rstrip(b'=')
Go           base64.RawURLEncoding.EncodeToString(b)
Padding      s + '=' * (-len(s) % 4)

>> Mais perguntas

P: Por que o Base64url omite o «=»?

R: O preenchimento pode ser deduzido do comprimento e «=» tem significado especial em URLs e query strings. Por isso o JWT (RFC 7515) e muitas APIs escrevem Base64url sem preenchimento.

P: Como restauro o preenchimento antes de decodificar?

R: Veja o comprimento módulo 4: resto 2 → acrescente ==, resto 3 → acrescente =, resto 0 → nada. Resto 1 nunca é válido. Troque também - por + e _ por /.

P: Base64url é criptografia?

R: Não, é apenas uma codificação: qualquer pessoa pode revertê-la. O conteúdo do payload de um JWT é legível, então não coloque segredos nele.

Outros idiomas