Codificação é o processo de traduzir dados entre dois formatos de acordo com um conjunto de regras ou uma fórmula. Por exemplo, você pode codificar "abc" para "ABC" usando regras de minúsculas para maiúsculas. Decodificação é o processo inverso. Você pode decodificar "ABC" para "abc" usando o mesmo conjunto de regras. Existem muitas aplicações diferentes para codificação e decodificação de dados. Criptografia, por exemplo, é uma forma de codificação que usa uma chave. Sem a chave, os dados codificados não podem ser decodificados. Dados de vídeo são codificados para torná-los menores para que streams de vídeo de alta definição possam ser visualizados pela Internet.
Codificação é comumente usada para reduzir o tamanho de dados de áudio e vídeo. Um programa codificador-decodificador, chamado codec, aplica uma série de algoritmos matemáticos que eliminam dados redundantes. Por exemplo, suponha que um arquivo contenha os dados "ABCDQABC". O algoritmo do Codec #1 pode ser substituir "ABC" por "Z". O arquivo resultante seria "ZDQZ", 50% menor que o original. O algoritmo do Codec #2 pode substituir "ABC?" por "Y" e "?ABC" por "X", onde "?" indica qualquer caractere. O arquivo resultante seria "YX", 75% menor que o original.
Decodificação usa o mesmo codec para reconstruir o arquivo original a partir de um arquivo codificado. Por exemplo, aplicar Codec #1 a "ZDQZ" inversamente substitui "Z" por "ABC" para criar o arquivo original "ABCDQABC". Codec #1, que era 50% menor, é chamado de codec sem perdas (lossless) porque a decodificação sempre recria o arquivo original. Codec #2 decodifica "YX" com "ABC??ABC", e então tenta adivinhar quais são os caracteres faltantes. O codec pode adivinhar "DE", resultando em "ABCDEABC". Codec #2, que era 75% menor, é um codec com perdas (lossy), porque o processo de decodificação pode criar um arquivo próximo ao original, mas não idêntico.
Nem toda codificação produz um resultado menor que os dados não codificados. Por exemplo, a URL "exemplo.com/Segredo da Vida.html" é inválida porque contém espaços. Um programador web codifica a URL, substituindo todos os espaços por "%20" para criar "exemplo.com/Segredo%20da%20Vida.html". O processo de decodificação realiza a operação inversa e substitui "%20" por um espaço. Da mesma forma, um programa de banco de dados pode codificar todos os dados em Unicode, um conjunto mestre de caracteres na maioria dos idiomas. Quando um usuário recupera dados, o programa decodifica o Unicode para corresponder ao idioma e configurações de teclado do usuário.
Algumas codificações não se destinam a ser decodificadas. Um hash é uma longa string de caracteres aleatórios usada com um algoritmo de codificação para produzir um resultado criptografado que não pode ser decodificado, mesmo quando você conhece o hash. Por exemplo, a senha de um usuário pode ser criptografada com um hash e armazenada em um banco de dados. Se um hacker encontrar o banco de dados, ele não pode decodificar nenhuma senha. Quando um usuário faz login, o sistema codifica a senha que o usuário insere com o hash e compara o resultado com o armazenado no banco de dados. Se um usuário esquecer a senha, deve alterá-la, porque o sistema não conhece a senha original, apenas seu valor criptografado.
Tecnologia Eletrônica © [www.351231.com]