0Pricing
Cryptology Academy · Aula

ASCII, Unicode e representação de texto

Entenda como o texto se transforma em bytes e por que a codificação de caracteres é importante em contextos criptográficos.

ASCII, Unicode e representação de texto é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.

ASCII como codificação de 7 bits

ASCII (Código Padrão Americano para o Intercâmbio de Informações), padronizado em 1963, codifica 128 caracteres em 7 bits (valores de 0 a 127). Ele abrange o alfabeto inglês (maiúsculas e minúsculas), algarismos, sinais de pontuação e caracteres de controle.

O ASCII foi projetado para o inglês e para equipamentos de telecomunicações norte-americanos. Funcionava bem para sua finalidade original, mas era fundamentalmente inadequado para qualquer idioma além do inglês.

Caracteres de controle no ASCII

Os primeiros 32 caracteres ASCII (0 a 31), mais DEL (127), são caracteres de controle. Eles foram originalmente projetados para controlar máquinas Teletype: LF (avanço de linha, 10), CR (retorno de carro, 13), BEL (campainha, 7), TAB (9), ESC (27).

Em contextos criptográficos, os caracteres de controle podem causar problemas. Um byte nulo (0x00) encerra prematuramente as cadeias de caracteres em C, e um caractere DEL ou ESC pode ser interpretado por emuladores de terminal.

ASCII estendido e seus problemas

Diferentes países criaram suas próprias extensões do ASCII usando o 8º bit (valores de 128 a 255), criando centenas de codificações incompatíveis: ISO-8859-1 (Latin-1) para a Europa Ocidental, KOI-8R para o russo e Big5 para o chinês.

Um documento salvo em uma codificação parece um amontoado de caracteres sem sentido quando é aberto com uma codificação diferente. A ausência de um padrão universal tornou o desenvolvimento internacional de software um desafio significativo durante as décadas de 1980 e 1990.

Unicode como conjunto universal de caracteres

O Unicode foi criado para fornecer um único conjunto universal de caracteres que abrange todos os sistemas de escrita humanos. Atualmente, ele define mais de 149.000 caracteres que abrangem 161 sistemas de escrita, incluindo sistemas históricos e símbolos.

O Unicode separa a identidade do caractere (um ponto de código, como U+0041 para "A") da codificação (a forma como esse ponto de código é armazenado em bytes). Essa separação permite que vários formatos de codificação representem os mesmos caracteres.

Codificação de tamanho variável em UTF-8

O UTF-8 codifica pontos de código Unicode usando de 1 a 4 bytes. Os caracteres ASCII (de U+0000 a U+007F) usam exatamente 1 byte, idêntico aos seus valores ASCII, tornando o UTF-8 compatível retroativamente com o ASCII.

Os caracteres de U+0080 a U+07FF usam 2 bytes. Os caracteres de U+0800 a U+FFFF usam 3 bytes (abrangendo a maioria dos sistemas de escrita comuns, incluindo chinês, japonês e coreano). U+10000 em diante usam 4 bytes.

UTF-16 e UTF-32

O UTF-16 usa 2 bytes para os caracteres mais comuns (o Plano Multilíngue Básico, de U+0000 a U+FFFF) e 4 bytes (pares substitutos) para caracteres além de U+FFFF. Ele é usado internamente pelo Windows e pelo Java.

O UTF-32 usa exatamente 4 bytes por ponto de código, tornando-o de largura fixa e fácil de indexar pela posição do caractere, mas desperdiçando espaço em textos compostos principalmente por ASCII. Ele é usado em algumas representações internas para permitir acesso aleatório rápido.

Marca de ordem dos bytes (BOM)

A marca de ordem dos bytes (BOM) é o caractere Unicode U+FEFF colocado no início de um arquivo para indicar a ordem dos bytes e a codificação. No UTF-16, ela distingue a ordem do byte mais significativo primeiro da ordem do byte menos significativo primeiro (FE FF e FF FE).

No UTF-8, a BOM (EF BB BF) é desnecessária, pois o UTF-8 não apresenta problemas de ordem dos bytes, mas alguns softwares do Windows ainda a adicionam. Isso causa problemas em aplicações criptográficas, nas quais a BOM é tratada como dado, e não como marcador.

Por que a codificação é importante na criptografia

As funções de resumo criptográfico e os códigos de autenticação de mensagens operam em sequências de bytes, não em caracteres abstratos. A mesma cadeia de caracteres "café" é codificada de forma diferente em UTF-8 (4 bytes: 63 61 66 C3 A9) e em Latin-1 (4 bytes: 63 61 66 E9).

Se dois sistemas calcularem o resumo da mesma cadeia de caracteres, mas usarem codificações diferentes, eles produzirão resumos diferentes e a autenticação falhará. Os protocolos criptográficos devem especificar explicitamente a codificação para garantir a interoperabilidade.

Emoji em UTF-8

Os emoji são caracteres Unicode do Plano Multilíngue Suplementar. O emoji "Rosto sorridente" (U+1F600) é codificado em 4 bytes no UTF-8: F0 9F 98 80.

Em contextos de segurança, emoji e caracteres Unicode de largura total têm sido usados em ataques de homógrafos, nos quais uma URL como "xn--pple-43d.com" (que se parece com "apple.com") engana os usuários para que visitem um site malicioso.

Normalização Unicode e criptografia

Alguns caracteres podem ser representados de várias formas Unicode. O "e com acento agudo" pode ser U+00E9 (pré-composto) ou U+0065 U+0301 (e seguido de acento combinante, decomposto). Eles parecem idênticos, mas têm representações diferentes em bytes.

Sistemas criptográficos que não normalizam o Unicode antes de calcular resumos podem produzir resumos diferentes para cadeias de caracteres visualmente idênticas. A normalização NFKC é normalmente recomendada antes de aplicar operações criptográficas ao texto.

Escolha da codificação correta para criptografia

Ao implementar sistemas criptográficos, a escolha da codificação é uma decisão crítica que deve ser documentada. As senhas devem ser codificadas como UTF-8 antes do cálculo do resumo. Os campos do protocolo devem especificar a codificação em seus documentos de especificação.

As falhas de interoperabilidade causadas por incompatibilidades de codificação são uma fonte comum de erros em sistemas criptográficos. Duas implementações do mesmo protocolo podem produzir resultados de autenticação diferentes se codificarem as cadeias de caracteres de forma diferente.

Questionário sobre codificação UTF-8

Teste sua compreensão da codificação UTF-8.

Principais conclusões: codificação de texto

O ASCII abrange 128 caracteres em 7 bits. O Unicode fornece um espaço universal de pontos de código para todos os sistemas de escrita humanos. O UTF-8 codifica o Unicode em 1 a 4 bytes, tendo o ASCII como subconjunto de 1 byte.

Na criptografia, a codificação é importante porque as funções de resumo operam em bytes. O mesmo texto em codificações diferentes produz resumos diferentes. A normalização Unicode é essencial antes de operações criptográficas no texto.

Perguntas Frequentes

A aula “ASCII, Unicode e representação de texto” é grátis?

Sim — o texto completo de “ASCII, Unicode e representação de texto” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.

O que vou aprender em “ASCII, Unicode e representação de texto”?

Entenda como o texto se transforma em bytes e por que a codificação de caracteres é importante em contextos criptográficos. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cryptology Academy?

Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “ASCII, Unicode e representação de texto”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cryptology Academy?

Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Codificação Base64: como funciona
  2. ASCII, Unicode e representação de texto
  3. Hexadecimal em saídas criptográficas
  4. Codificação, criptografia e hashing
← Voltar para Cryptology Academy