1001Ferramentas
🎲Geradores

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