1001Ferramentas
📡Conversores

Z85 (ZeroMQ)

Codifique e decodifique dados em Z85, a variante de Base85 do ZeroMQ que usa um alfabeto seguro para strings e arquivos de configuração.

Z85

Z85: o base85 que o ZeroMQ escolheu

O Z85 codifica quatro bytes em cinco caracteres, como qualquer base85, mas com um alfabeto escolhido a dedo: ele evita a aspa simples, a aspa dupla, a barra invertida e a crase. O motivo é prático — assim o texto resultante pode ser colado dentro de string em praticamente qualquer linguagem, em arquivo de configuração e em linha de comando sem precisar de escape.

Digite o texto e receba a codificação. Há uma restrição vinda da especificação: o comprimento em bytes precisa ser múltiplo de quatro. Diferente do Ascii85, o Z85 não define preenchimento para o último grupo incompleto, e a página recusa em vez de inventar um. Quem precisa codificar comprimento arbitrário tem de combinar o preenchimento por fora, junto com a aplicação que vai decodificar.

O uso mais conhecido é o CurveZMQ, o mecanismo de segurança do ZeroMQ, onde chaves de 32 bytes viram 40 caracteres — múltiplo de quatro por construção, o que explica por que a limitação nunca incomodou no contexto de origem. A implementação foi conferida contra o vetor da especificação: os bytes 86 4F D2 6F B5 59 F7 5B codificam exatamente para HelloWorld.

Perguntas frequentes

Por que o comprimento precisa ser múltiplo de quatro?
Porque a especificação do Z85 simplesmente não define o que fazer com um grupo incompleto. Ascii85 e base64 definem preenchimento; o Z85 foi desenhado para dados de tamanho conhecido e fixo, como chaves, e ficou sem essa parte. Preencher por conta própria só funciona se quem decodifica souber a mesma convenção.
Qual a diferença para o Ascii85?
A conta é a mesma; o alfabeto é outro. O Ascii85 usa uma faixa contígua de caracteres a partir do ponto de exclamação, que inclui aspas e barra invertida — justamente os que atrapalham dentro de código. O Z85 escolheu 85 símbolos evitando esses, ao custo de o alfabeto não ser contíguo.
Serve para dado binário qualquer?
Serve, desde que o comprimento seja múltiplo de quatro. O ganho sobre base64 é de tamanho — 25% de crescimento contra 33% — e sobre o Ascii85 é de conveniência ao embutir em código. Para dado que vai em URL, nenhum dos três é ideal: base64url continua sendo a escolha.

Ferramentas Relacionadas