Gerador de String Base91 Aleatória
Gera uma string aleatória codificada em Base91 (mais compacta que Base64). Útil para chaves curtas.
Base91: o primo mais denso do Base64
O Base91 (também grafado basE91) é um encoding binário-para-texto criado por volta de 2000 por Joachim Henke. Ele empacota mais dados por caractere de saída que o Base64, ao custo de usar um alfabeto menos universal. A cada 13 bytes de entrada produz 16 caracteres de saída (razão ~1,23), contra 1,33 do Base64 — um overhead de cerca de 14% vs 33%. Strings aleatórias em Base91 são, portanto, menores que o equivalente Base64 para a mesma quantidade de bits de entropia.
Alfabeto e algoritmo
O Base91 usa 91 caracteres ASCII imprimíveis — basicamente toda a faixa imprimível exceto ", ' e \\ (que exigiriam escape dentro de literais de string em C ou JSON). O encoder acumula bits da entrada e os consome em unidades de 13 bits (às vezes 14), procurando cada unidade em um par de tabelas que mapeiam para dois caracteres de saída. O decoder faz o caminho inverso.
Comparação de tamanhos
Para 100 bytes de entrada binária o comprimento codificado é aproximadamente:
- Base64: 136 caracteres (RFC 4648 — suportado em qualquer stdlib).
- Base85 / Ascii85: 125 caracteres (usado em PDFs Adobe; RFC 1924 para IPv6).
- Base91: ~123 caracteres (Henke).
- Base122: ~113 caracteres (usa bytes não-ASCII — seis code points ficam de fora).
Quando usar Base91 (e quando não usar)
Use quando precisar de transporte só-texto e essa economia extra de ~10% sobre Base64 fizer diferença: data URIs densos, arquivos de log, telemetria embarcada. Evite em APIs HTTP, URLs e e-mail — Base64 (ou Base64url) é nativo em toda stdlib, enquanto Base91 quase sempre exige importar um pacote dedicado. Base91 também não tem variante URL-safe pronta, ao contrário do Base64url padronizado na RFC 4648.
Suporte em bibliotecas
- Node.js:
npm i base91. - Python:
pip install py-base91. - Rust: crate
base91. - C: referência original do Henke, licença MIT.
Perguntas frequentes
Uma string aleatória em Base91 serve como senha ou token? Sim. Não é mais fraca que a mesma quantidade de bits de entropia em Base64 — o que importa é o CSPRNG por trás, não o alfabeto. As strings só ficam mais curtas para o mesmo nível de segurança.
Que comprimento gerar para um token de 128 bits? Cerca de 22 caracteres Base91 (~128 bits de entropia). Para segurança de 256 bits, mire em torno de 40 caracteres.
O Base91 tem suporte universal? Não. Diferente do Base64, é preciso instalar uma biblioteca. Se a interoperabilidade com clientes arbitrários importa, fique com Base64.
Posso colocar uma string Base91 em uma URL? Não diretamente — ela contém caracteres que exigem percent-encoding (/, ?, # etc.). Depois do escape boa parte da vantagem sobre Base64url some.
A ferramenta envia meus dados para algum servidor? Não. A string aleatória é gerada no seu navegador via crypto.getRandomValues().
Ferramentas Relacionadas
Cor aleatória com contraste AA garantido
Gere combinações de cores aleatórias que já passam no contraste WCAG AA (4.5:1) para texto e fundo. Crie paletas acessíveis e legíveis sem testar cor a cor.
Gerador de Hora Aleatória
Sorteia horários (HH:MM:SS) dentro de uma janela informada. Útil para preencher escalas e testes.
Gerador de Porta Aleatória
Sorteie portas TCP/UDP aleatórias dentro da faixa efêmera (49152–65535) ou em qualquer intervalo. Evita as portas conhecidas (well-known) reservadas pela IANA. Tudo no navegador.