crc-polinomios
A codificação binária é muito prática para uma utilização em equipamentos electrónicos como um Computador, nos quais a informação pode ser codificada graças à presença ou não de um sinal eléctrico. Contudo, o sinal eléctrico pode sofrer perturbações (distorção, presença de barulho), nomeadamente no momento do transporte dos dados num longo trajecto. Assim, o controlo da validade dos dados é necessário para certas aplicações (profissionais, bancárias, industriais, confidenciais, relativas à segurança,…).
É por isso que existem mecanismos que permitem garantir um certo nível de integridade dos dados, quer dizer, de fornecer ao destinatário um seguro de que os dados recebidos são bem similares aos dados emitidos. A proteção contra os erros pode fazer-se de duas maneiras, ou fiabilizando o apoio de transmissão, quer dizer baseando-se numa proteção física. Uma ligação convencional tem geralmente uma taxa de erro compreendida entre 10-5 e 10-7, ou instalando mecanismos lógicos de detecção e correção dos erros.
Cyclic Redundancy Check ou verificação de redundância cíclica é um código detector de erros, um tipo de função hash que gera um valor expresso em poucos bits em função de um bloco maior de dados, como um pacote de dados, ou um ficheiro, por forma a detectar erros de transmissão ou armazenamento. O CRC é calculado e anexado à informação a transmitir (ou armazenado) e verificada após a recepção ou acesso, para confirmar se não ocorreram alterações. O CRC é popular por ser simples de implementar em hardware binário, simples de ser analisado matematicamente, e pela eficiência em detectar erros típicos causados por ruído em canais de transmissão.
A utilidade do CRC advém das seguintes propriedades:
Como todos os bits são usados no cálculo do CRC, a mudança em apenas um bit provoca uma mudança no CRC. Mesmo mudanças pequenas nos dados levam a CRC’s muito diferentes. Experiências com o CRC-32 (usando polinómios de 32 bits) mostram