Codificador e decodificador z-base-32
“Hello” vira jb1sa5dx em z-base-32, o alfabeto Base32 de Zooko que deixa de fora o 0, o 2, o l e o v e não acrescenta preenchimento, então os códigos ficam curtos e fáceis de ditar ou copiar à mão. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- Hello
- Modo de cálculo
- Encode
- Resultado
- jb1sa5dx
- Comprimento
- 8
- Bytes de entrada
- 5
- Alfabeto
- z-base-32
z-base-32 é a variante de Base32 orientada a pessoas de Zooko Wilcox-O'Hearn: um alfabeto de trinta e dois símbolos cuidadosamente permutado que favorece leitura, escrita e transcrição falada, ainda empacotando cinco bits por caractere. Diferente do Base32 do RFC 4648, remove pares confusos, reordena símbolos para sons comuns aparecerem com mais frequência e omite o padding com sinais de igual, mantendo tokens curtos. Esta capacidade converte texto UTF-8 em z-base-32 minúsculo ou recupera o texto original a partir de uma string z-base-32.
Como o z-base-32 empacota bits com o alfabeto de Zooko
z-base-32 parte da mesma ideia de cinco bits por caractere do Base32 clássico, mas a tabela de símbolos é completamente diferente. Os trinta e dois caracteres são y b n d r f g 8 e j k m c p q x o t 1 u w i s z a 3 4 5 h 7 6 9 nessa ordem.
Os dígitos zero e dois, a letra ele e a letra vê ficam de fora porque se confundem facilmente com outros glifos quando alguém lê um código em voz alta ou o copia à mão. Os símbolos restantes são ordenados para que vogais e consoantes frequentes tendam a aparecer antes no espaço de valores, tornando strings aleatórias um pouco mais pronunciáveis. A codificação trata a entrada como bytes UTF-8, lê-os como um fluxo contínuo de bits e emite um caractere do alfabeto a cada cinco bits.
Quaisquer bits restantes no final recebem zero à direita para completar um quinteto final; nenhum sinal de igual é anexado. A decodificação inverte o mapa: cada símbolo contribui com cinco bits, bytes completos são emitidos assim que oito bits se acumulam, e bits residuais de padding que não formam um byte completo são descartados. Espaços em branco são ignorados para colagens multilinha ainda funcionarem, e letras maiúsculas viram minúsculas antes da busca.
Esta página não é de propósito o Base32 do RFC 4648 nem Crockford Base32; esses alfabetos e regras de padding são intenções de busca distintas com outros alvos de interoperabilidade.
O que você envia e o que recebe de volta
Envie um campo de string obrigatório chamado text e um campo mode opcional com encode ou decode. O modo encode trata text como conteúdo UTF-8 simples e devolve uma string result em minúsculas no alfabeto de Zooko sem padding. O modo decode trata text como z-base-32, normaliza maiúsculas e espaços, valida cada símbolo e devolve a string UTF-8 recuperada em result.
Ambas as direções ecoam mode, o text original, result, um campo length da saída principal, rótulos alphabet e charset, um flag padding em false e uma referência curta ao padrão para os clientes confirmarem o perfil. Falhas de validação não consomem saldo pré-pago. Verificações típicas incluem codificar uma palavra curta como Hello, decodificar a string de ida e volta ao mesmo texto e forçar um erro colando um símbolo que o z-base-32 exclui de propósito, como zero ou a letra ele.
Onde o z-base-32 aparece no trabalho real
Identificadores voltados a pessoas que precisam ser lidos ao telefone, escritos no papel ou digitados a partir de uma captura se beneficiam de um alfabeto que evita glifos ambíguos. z-base-32 foi desenhado exatamente para isso: sistemas de código aberto como Mnet e Tahoe-LAFS, e protocolos como ZRTP, adotaram-no para trocar códigos compactos sem as armadilhas do zero versus O e do um versus I de alfabetos mais densos.
Equipes de produto que montam frases de recuperação offline, códigos curtos de autenticação air-gapped ou tokens de uso único no suporte costumam preferir a tabela de Zooko quando a string será falada ou transcrita em vez de apenas lida por máquina. Grupos de engenharia que escrevem testes de interoperabilidade precisam de uma única verdade de referência para encode e decode que bata com as próprias bibliotecas e nunca substitua caracteres ilegais em silêncio.
Autores de currículo que ensinam esquemas de codificação querem uma landing dedicada a z-base-32 em vez de enterrá-lo sob o Base32 do RFC 4648, porque se busca Zooko, Base32 humano e tokens sem padding como intenções separadas. Equipes de suporte que colam códigos multilinha do chat precisam de tolerância a espaços sem aceitar lixo que geraria a chave errada.
Se você precisa do Base32 clássico do RFC 4648 com A-Z e dois a sete, Base64 ou Crockford Base32, trate-os como landings separadas em vez de sobrecarregar esta página do codificador z-base-32.
Casos de uso
Códigos de recuperação falados e manuscritos
Codifique segredos curtos como z-base-32 para que os usuários possam lê-los em voz alta ou anotá-los sem confundir zero, ele, vê ou dois com glifos parecidos.
Tokens offline legíveis por pessoas
Produza identificadores compactos sem padding para autenticação air-gapped, códigos de uso único do suporte ou URLs de produto que as pessoas digitam à mão.
Perguntas frequentes
Qual alfabeto o z-base-32 usa?
O alfabeto permutado de Zooko ybndrfg8ejkmcpqxot1uwisza345h769. Exclui 0, l, v e 2, e não usa padding com '='.
Como isso difere do Base32 do RFC 4648?
O RFC 4648 usa A-Z e 2-7 com padding opcional de iguais. z-base-32 usa outra ordem de símbolos, remove caracteres ambíguos e omite padding. Não são intercambiáveis.
Posso codificar e decodificar?
Sim. Defina mode como encode (padrão) para transformar texto UTF-8 simples em z-base-32, ou mode como decode para recuperar o texto a partir de uma string z-base-32.
O que acontece se a string tiver um caractere inválido?
Símbolos fora do alfabeto de Zooko nunca são substituídos. Falhas de validação não são cobradas.
Quanto custa?
A ferramenta do navegador é gratuita e roda localmente.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/enc/base32-zbase \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base32-zbase", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base32-zbase",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base32-zbase", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base32-zbase", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "Hello"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base32_zbase",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
O modo de codificação empacota seus bytes no alfabeto ybndrfg8ejkmcpqxot1uwisza345h769; o de decodificação unifica maiúsculas, remove espaços em branco e rejeita qualquer símbolo ilegal com um erro invalid_input claro, para que um caractere digitado errado nunca vire em silêncio um payload incorreto.
Como o z-base-32 empacota bits com o alfabeto de Zooko
Um caractere fora do alfabeto gera invalid_input com a posição e o símbolo ofensor, o modo correto de falha para tokens que pessoas digitam sob pressão. O caminho é empacotamento puro de bits inteiros, sem rede, sem sementes aleatórias e sem carimbos de tempo, de modo que entradas idênticas sempre produzem JSON idêntico.
O que você envia e o que recebe de volta
Quando mode é omitido, encode é o padrão, para que um payload mínimo ainda seja útil. Encode também informa input_bytes; decode informa output_bytes. Text ausente, objetos que não são string, valores de mode não suportados, strings acima do máximo documentado, caracteres ilegais do alfabeto ou bytes decodificados que não são UTF-8 válido falham com invalid_input e uma mensagem clara em inglês. O preço de chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item.
Onde o z-base-32 aparece no trabalho real
Como esta capacidade é um motor de parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e validação falha não consome saldo.
Casos de integração
Fixtures de interoperabilidade para bibliotecas de Zooko
Gere vetores golden de encode e decode que batem com bibliotecas z-base-32 usadas em ZRTP, sistemas no estilo Tahoe e ferramentas open-source relacionadas.