O que Base64url altera
Base64url é a variante adequada a URLs e nomes de ficheiro definida na RFC 4648. Mantém o mesmo agrupamento de bits do Base64 comum, mas troca + por - e / por _.
O preenchimento = continua definido, mas muitos protocolos omitem-no porque o comprimento pode ser inferido. Esta ferramenta permite escolher a forma emitida e aceita ambas na descodificação quando o comprimento é válido.
Texto Unicode é codificado como UTF-8. Base64url não torna dados secretos e não aplica percent-encoding de URL.
Como usar Base64url
- Escolha Codificar para texto ou Descodificar para uma cadeia Base64url.
- Ative preenchimento quando o protocolo exigir comprimento múltiplo de quatro; desative para formatos como segmentos compactos de token.
- Cole o valor sem espaços, + ou /.
- Compare a saída com Base64 comum quando os bytes gerarem os carateres 62 ou 63.
- Inverta a direção para confirmar a recuperação do texto UTF-8.
Exemplos Base64url com e sem preenchimento
Os exemplos destacam UTF-8, preenchimento opcional e a diferença do alfabeto Base64 comum.
| Entrada | Saída | Direção da conversão | Notas |
|---|---|---|---|
Hello |
SGVsbG8= |
Codificar | Incluir preenchimento: Com preenchimento — Hello com preenchimento. Este texto não usa os dois carateres do alfabeto que diferem do Base64 comum. |
Hello |
SGVsbG8 |
Codificar | Incluir preenchimento: Sem preenchimento — Hello sem preenchimento. A RFC 4648 permite omitir o preenchimento quando o comprimento dos dados é conhecido. |
SGVsbG8 |
Hello |
Descodificar | Descodificar qualquer estilo de preenchimento. O descodificador repõe internamente o preenchimento necessário antes de reconstruir os bytes. |
࠾ |
4KC- |
Codificar | Incluir preenchimento: Com preenchimento — Caráter do alfabeto seguro para URL. Este caráter UTF-8 válido produz um hífen final em Base64url, onde o Base64 comum usa +. |
你好 |
5L2g5aW9 |
Codificar | Incluir preenchimento: Sem preenchimento — Unicode em UTF-8. O texto Unicode é convertido em bytes UTF-8 antes da codificação Base64url. |
{"ok":true} |
eyJvayI6dHJ1ZX0 |
Codificar | Incluir preenchimento: Sem preenchimento — Texto JSON compacto. Codificar JSON não o assina, valida nem cifra; representa apenas os respetivos bytes UTF-8. |
Alfabeto e preenchimento aceites
A descodificação aceita letras, dígitos, - e _, além de zero a dois sinais = apenas no final. Os espaços e o alfabeto + / são rejeitados para manter a variante explícita.
Um comprimento com resto um na divisão por quatro é impossível. Quando aparece =, a quantidade tem de ser exatamente a necessária.
- Use - em vez de +.
- Use _ em vez de /.
- O preenchimento só pode estar no final.
- Um comprimento com resto 1 é inválido.
- Bits finais não canónicos são rejeitados.
Como Base64url funciona
Três bytes formam vinte e quatro bits, divididos em quatro grupos de seis. Esses índices usam o alfabeto Base64url.
Um ou dois bytes finais produzem dois ou três símbolos de dados. O preenchimento opcional completa quatro posições sem carregar informação adicional.
Na descodificação, a ferramenta restaura temporariamente o preenchimento, converte - e _ para o alfabeto comum, valida a forma e exige UTF-8 válido.
Onde Base64url aparece
Base64url é adequado quando dados binários precisam ser incorporados em componentes que tratam + e / de forma especial.
| Caso | Descrição |
|---|---|
| JWT e JWS | Segmentos usam Base64url sem preenchimento, junto com regras criptográficas externas. |
| Parâmetros de URL | Reduz a necessidade de escapar + e /, embora o URL completo continue a ter sintaxe própria. |
| Identificadores opacos | Bytes aleatórios podem ser serializados em texto compacto. |
| Nomes de ficheiro | O alfabeto evita separadores de caminho comuns. |
| Testes de API | Ajuda a detetar confusão entre Base64 comum e Base64url. |
Erros comuns de Base64url
Copiar Base64 comum com + ou /, acrescentar espaços ou usar quantidade errada de = são os problemas mais frequentes.
Uma cadeia pode descodificar em bytes corretos e ainda não ser texto UTF-8. Tokens também exigem validação de estrutura e assinatura fora desta ferramenta.
- Não troque Base64url por percent-encoding.
- Não presuma que remover = sempre corrige um valor.
- O caráter + não é aceite.
- Uma cadeia de comprimento 1 módulo 4 é impossível.
- Codificação não implica autenticidade.
Base64url, Base64 comum e URL encoding
Base64url e Base64 comum representam os mesmos bits com dois símbolos diferentes. URL encoding trabalha sobre carateres de uma URL e usa sequências %HH.
Base32 é mais longo e usa alfabeto menor; Base58 elimina carateres ambíguos, mas utiliza outro algoritmo.
| Caso | Descrição |
|---|---|
| Base64 comum | Usa + e / e normalmente mantém preenchimento. |
| URL encoding | Escapa bytes reservados com %, não é uma variante Base64. |
| Base32 | Usa cinco bits por símbolo e letras A-Z com 2-7. |