Você provavelmente já viu uma string hash ou um valor de soma de verificação durante uma atualização de software ou download de arquivo. Parece um ruído aleatório – uma longa sequência de dígitos hexadecimais ou um número curto anexado a um arquivo. Mas serve a um propósito vital. É uma impressão digital. Mesmo que um único dado seja alterado, essa impressão digital muda completamente. Este mecanismo garante que o que você baixou é exatamente o que foi enviado, até o último byte.
As duas formas mais comuns de conseguir isso são Checksums e Cyclic Redundancy Checks (CRC). Embora pareçam semelhantes, eles operam com princípios diferentes e atendem a nichos ligeiramente diferentes no mundo dos protocolos de Internet e do armazenamento de dados. Compreender a diferença é importante para qualquer pessoa que lida com transferências de arquivos, tráfego de rede ou diagnóstico de hardware.
A soma de verificação simples
Basicamente, uma soma de verificação é um valor derivado de um bloco de dados digitais. A versão mais básica é o Internet Checksum usado em protocolos mais antigos como IPv4 e UDP. Funciona tratando os dados como uma sequência de palavras de 16 bits e somando-os. Se houver um número ímpar de bytes, um byte de preenchimento será adicionado. A soma é então complementada.
Este método é rápido. Muito rápido. Mas não é particularmente robusto. Pode perder certos tipos de erros. Por exemplo, se dois bytes trocam de lugar, ou se uma mudança de bit em uma posição é compensada por uma mudança de bit em outra, a soma de verificação pode permanecer inalterada. É como verificar o peso de uma mala, mas ignorar o conteúdo. Você sabe que o peso está correto, mas não sabe se a camisa ainda está lá ou se foi substituída por uma pedra do mesmo peso.
Devido a essas limitações, somas de verificação simples raramente são usadas para verificações de integridade críticas atualmente. Eles foram substituídos principalmente por algoritmos mais robustos como CRC ou hashes criptográficos como SHA-256. No entanto, compreender a soma de verificação simples ajuda a explicar por que precisamos de ferramentas melhores para verificação da integridade dos dados.
Insira a verificação de redundância cíclica (CRC)
CRC é onde as coisas ficam interessantes. É baseado na divisão polinomial. Em vez de apenas adicionar números, o CRC trata os dados como um grande número binário e os divide por um polinômio gerador predefinido. O restante desta divisão é o valor CRC.
Esta abordagem matemática torna o CRC muito melhor na detecção de erros. Ele pode capturar todos os erros de bit único, todos os erros de bit duplo e qualquer número ímpar de erros. Ele também detecta erros de burst – bits consecutivos corrompidos – que são comuns em canais de transmissão ruidosos. Pense nos erros burst como uma falha momentânea em um sinal de rádio ou um arranhão em um CD. O CRC foi projetado para lidar com essas imperfeições do mundo real.
A variante mais comum é CRC-32, que produz um valor de 32 bits. Você o encontrará em todos os lugares. Quadros Ethernet, arquivos ZIP, imagens PNG e até mesmo alguns sistemas de banco de dados usam CRC-32. Não é criptograficamente seguro – você não pode usá-lo para provar que alguém não violou intencionalmente seus dados – mas é excelente para corrupção acidental.
Por que isso é importante para você?
Você pode não pensar no CRC ao transmitir um vídeo ou enviar um e-mail. Mas está funcionando nos bastidores. Quando você baixa um patch de jogo, seu sistema usa somas de verificação ou CRC para verificar os arquivos. Se os valores não


























