Base64 e Base62 | Conceito
- Base64 e Base62 | Conceito
🧠 1. O que são codificações Base
Base64 e Base62 são sistemas de codificação textual que convertem dados binários (bytes, arquivos, imagens, senhas, etc.) em caracteres legíveis (letras, números e alguns símbolos).
Aqui os caracteres representa os bytes e não os valores dos bytes
Essa conversão é útil porque muitos sistemas — como e-mails, URLs, bancos de dados e APIs — não aceitam dados binários diretamente, apenas texto.
🔢 2. Base64
🧩 Definição
A Base64 é uma codificação que usa 64 caracteres diferentes para representar dados binários. Ela converte blocos de 3 bytes (24 bits) em 4 caracteres ASCII (6 bits cada).
Conjunto de caracteres usado:
A–Z a–z 0–9 + /
O caractere = é usado para preenchimento (padding) quando o total de bytes não é múltiplo de 3.
⚙️ Funcionamento
- Divide os dados em blocos de 3 bytes (24 bits);
- Divide esses 24 bits em 4 grupos de 6 bits;
- Cada grupo de 6 bits é convertido em um caractere do alfabeto Base64.
Exemplo prático:
Texto: "Oi"
Bytes: [79, 105]
Codificado: "T2k="
💡 Usos Comuns da Base64
| Contexto | Descrição | Exemplo |
|---|---|---|
| E-mails (MIME) | Envio de anexos em formato texto | Arquivos .jpg, .pdf em e-mails |
| APIs REST / JSON | Transmitir imagens, PDFs ou binários como texto | "arquivo": "iVBOR..." |
| Autenticação HTTP | Codificar credenciais “usuário:senha” | Authorization: Basic YWRtaW46c2VuaGE= |
| HTML / CSS | Incorporar imagens diretamente no código | <img src="data:image/png;base64,..."> |
| Armazenamento em banco | Gravar dados binários onde só texto é aceito | Base de dados SQLite, MongoDB, etc. |
📉 Desvantagens da Base64
- Aumenta o tamanho dos dados em cerca de 33%.
- Inclui caracteres especiais (
+,/,=), que podem precisar de escape em URLs.
🔠 3. Base62
🧩 Definição
A Base62 é uma codificação semelhante à Base64, mas usa somente letras e números — ou seja, 62 caracteres.
Conjunto de caracteres usado:
A–Z a–z 0–9
Essa limitação evita símbolos como +, / e =, tornando-a mais segura para URLs e identificadores.
⚙️ Funcionamento
A Base62 geralmente converte números inteiros em uma forma mais compacta e legível, usando apenas os 62 caracteres possíveis.
Exemplo:
Número: 999999
Base62: 4C91
Isso é muito usado para gerar IDs curtos a partir de números longos.
💡 Usos Comuns da Base62
| Contexto | Descrição | Exemplo |
|---|---|---|
| Encurtadores de URL | Converter um ID numérico em um código curto | https://meusite.com/u/4fA2Bz |
| IDs únicos | Criar identificadores curtos e legíveis | 1LY7VK |
| Códigos de convite / referência | Geração de chaves simples, sem símbolos especiais | CUPOM: A8bD2q |
| URLs seguras | Evita caracteres que precisem ser codificados | Ideal para sistemas web |
📈 Vantagens da Base62
- Compatível com URLs e nomes de arquivo (sem símbolos especiais).
- Representa números de forma compacta.
- Fácil de usar em sistemas com restrição de caracteres.
📉 Desvantagens da Base62
- Menos compacta e padronizada que Base64.
- Pode exigir implementações específicas, já que não há uma norma oficial universal (ao contrário da Base64, padronizada no RFC 4648).
⚖️ 4. Comparativo entre Base64 e Base62
| Característica | Base64 | Base62 |
|---|---|---|
| Alfabeto | 64 caracteres (A–Z, a–z, 0–9, +, /) | 62 caracteres (A–Z, a–z, 0–9) |
| Usa símbolos especiais | Sim (+, /, =) | Não |
| Compatível com URL | Não (sem codificação extra) | Sim |
| Tamanho do texto | Menor | Um pouco maior |
| Padrão oficial | Sim (RFC 4648) | Não |
| Uso típico | Dados binários (imagens, arquivos, APIs) | URLs curtas, IDs, cupons, tokens |
| Segurança / legibilidade | Boa | Excelente para humanos e URLs |
🧰 5. Exemplos de uso em código
🐍 Exemplo em Python
import base64
# Base64
texto = "Olá Mundo"
b64 = base64.b64encode(texto.encode()).decode()
print("Base64:", b64)
# Base62 (usando um pacote externo, ex: base62)
import base62
num = 123456789
b62 = base62.encode(num)
print("Base62:", b62)
Saída:
Base64: T2zDoSBNdW5kbw==
Base62: 8M0kX
💻 Exemplo em JavaScript
// Base64
const texto = "Oi Mundo";
const b64 = btoa(texto);
console.log("Base64:", b64);
// Base62 (precisa de lib externa, exemplo com base-x)
import { baseX } from 'base-x';
const BASE62 = baseX('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
console.log("Base62:", BASE62.encode(Buffer.from('12345')));
🧾 6. Quando usar cada uma
| Situação | Codificação recomendada |
|---|---|
| Envio de arquivos via API | Base64 |
| Armazenar imagens em HTML | Base64 |
| Geração de links curtos (URL Shortener) | Base62 |
| Criação de códigos de convite | Base62 |
| Transmitir dados binários seguros | Base64 |
| Evitar caracteres especiais (em URLs) | Base62 |
🧩 7. Conclusão
- Base64 → Ideal para transmitir ou armazenar dados binários de forma segura e padronizada.
- Base62 → Ideal para representar números ou gerar identificadores curtos sem usar símbolos especiais.
Ambos tornam os dados transportáveis, seguros e compatíveis com texto, mas são escolhidos conforme o contexto:
- Base64 → Padronização e interoperabilidade
- Base62 → Legibilidade e compatibilidade com URLs