Mensagens em binário: um jogo de codificação entre amigos
Crie e descodifique mensagens em binário com grupos de oito bits, saiba onde entra o UTF-8 e perceba por que motivo codificação não significa segredo.
Um código para aprender, não para esconder
Transformar uma frase numa fila de zeros e uns é uma boa forma de explorar bytes e codificações de carateres. À primeira vista, o resultado parece uma mensagem secreta. Contudo, qualquer pessoa que conheça a regra consegue revertê-lo: binário é uma representação, não é encriptação.
Este jogo usa bytes UTF-8 apresentados em grupos de oito bits. Para letras ASCII, cada caráter ocupa um byte. Letras acentuadas e outros símbolos podem ocupar vários bytes.
Primeira mensagem: apenas ASCII
Comece por OLA. Os valores ASCII são 79, 76 e 65:
O → 01001111
L → 01001100
A → 01000001
A mensagem completa fica assim:
01001111 01001100 01000001
Os espaços entre grupos são apenas separadores visuais. Não fazem parte dos três bytes.
Como descodificar à mão
Para cada grupo de oito bits, some os valores das posições que contêm 1. As posições de um byte valem 128, 64, 32, 16, 8, 4, 2 e 1.
No primeiro grupo, 01001111, estão ativos 64, 8, 4, 2 e 1:
64 + 8 + 4 + 2 + 1 = 79 → O
Repita o processo para os restantes grupos e procure os valores na tabela ASCII. Para uma mensagem curta, papel e lápis chegam; para uma frase maior, o conversor reduz erros de transcrição.
E se houver acentos?
A palavra OLÁ termina em Á, que não existe no ASCII de 7 bits. Em UTF-8, esse caráter usa dois bytes:
OLÁ
01001111 01001100 11000011 10000001
Há três carateres visíveis, mas quatro bytes. Contar grupos como se cada um correspondesse sempre a uma letra daria uma conclusão errada. O descodificador precisa de juntar 11000011 10000001 segundo as regras de UTF-8.
Um desafio em três níveis
Nível 1 — algarismos e letras básicas
Codifique uma palavra curta sem acentos, retire os espaços entre bytes e peça a outra pessoa que volte a agrupá-los. Para evitar ambiguidade, indique que a largura é de oito bits.
Nível 2 — pontuação e espaços
Inclua um espaço, cujo byte ASCII é 00100000, e um ponto de exclamação, 00100001. Os separadores de apresentação devem ficar claramente distintos do byte que representa um espaço real.
Nível 3 — português em UTF-8
Use uma frase como Olá!. O objetivo passa a ser identificar limites entre sequências UTF-8, em vez de assumir uma relação de um byte por caráter.
Experimente descodificar esta mensagem:
01000010 01001001 01010100 01010011
Cada grupo corresponde a B, I, T e S: a resposta é BITS.
Regras úteis para o jogo
- Combinem previamente a codificação: UTF-8 é uma escolha prática.
- Conservem os zeros à esquerda de cada byte.
- Separem visualmente os bytes sem confundir o separador com dados.
- Não usem este método para palavras-passe, chaves ou informação confidencial.
- Se a mensagem vier de uma fonte desconhecida, confirmem também a codificação e a integridade dos bytes.
Para criar um desafio, use o conversor de texto para binário. Para verificar a resposta, cole os bits no conversor de binário para texto. Todo o processamento dos conversores ocorre localmente no navegador.
O valor do exercício está em tornar visível a cadeia entre texto, números, bytes e bits. O aspeto misterioso é divertido; a segurança, essa, exige ferramentas criptográficas próprias.