2012/11/04

O que é o Checksum?


O checksum... Provavelmente nunca ouviram falar de tal coisa - ou se forem mais azarados, poderão já se ter deparado com um qualquer erro que alertava para um "checksum error". Mas afinal... o que é o checksum?


Embora os dados digitais sejam bastante mais resistentes a erros que os dados analógicos, a verdade é que nenhum sistema está 100% imune a erros, e por isso são necessárias formas de verificar se os dados são precisamente aqueles que seriam supostos ser. Para isso recorre-se a esta técnica bastante simples, a que se dá o nome de checksum, que em português se poderia descrever como uma "soma de verificação".

O conceito é simples: quando estivermos a transmitir informação de um lado para o outro, vamos mantendo uma "soma" de todos os bytes que estamos a enviar, e no final enviamos a "soma de verificação" para que o sistema de destino possa verificar se esse valor bate certo com o que ele próprio calculou.

Por exemplo, imaginem que têm que dizer 5 algarismos a um amigo através do telemóvel, e vão dizendo: 1, 3, 2, 4, 1.

Se não houvesse qualquer tipo de verificação, ele poderia ter erradamente percebido um algarismo trocado. Mas se no final enviarem um número adicional, correspondente à soma de todos eles (neste caso, 11), ele poderá verificar se a soma dos números que ele entendeu bate certo.


Mas... a coisa não fica por aqui... imagine-se que em vez de um número errado, o destinatário percebia mal dois números... ou três, ou todos! Podia até acontecer o caso de perceber um número como sendo "um abaixo" e outro "um acima", o que resultaria numa soma correcta no final - mesmo tendo os dados errados.


Por isso é que o método usado para calcular o checksum não é, na verdade, uma mera soma de todos os bytes da informação, mas sim um método que pode ser calculado usando diferentes algortimos, e que tenta minimizar matematicamente e estatisticamente a possibilidade de ser poder obter o mesmo checksum se houver vários dados trocados.

Este tipo de verificação é usado em praticamente todo o tipo de transmissões de dados, quer seja de um equipamento para outro, como também ocorre até dentro do mesmo computador, quando se lêem dados de um disco rígido por exemplo! (Livrem-se de apanharem um erro de CRC - Cyclic Redundacy Check - nessa situação! :)

Mas, o checksum é também frequentemente utilizado para validar a introdução de dados numéricos por meios manuais. Por exemplo, no vosso número do BI, certamente já terão reparado que no final existe um digito extra. Esse dígito é precisamente um checksum, que serve para que quando introduzem o vosso número de BI num programa preparado para o efeito, este possa validar se não se enganaram e meteram um dígito errado.

E... sem checksum para validar todo este artigo, fico-me por aqui, com a esperança de que da próxima vez que vos passar um checksum pela frente... já possam saber um pouco mais sobre a sua função. :)

5 comentários:

  1. Não fazia ideia disto... boa dica ;)

    ResponderEliminar
  2. Para quem não conhece, aqui está a historia que como foi descoberto o dígito de controle do BI pelo Prof. Picado.
    http://www.mat.uc.pt/~picado/SistIdent/mistBI.html

    ResponderEliminar
  3. Julgo que houve ai um tempo que para fazer carregamento de telemóveis pelo multibanco também era necessário a introdução do checkdigit (para evitar carregar o telemóvel errado)

    Bom link rss, obrigado pela partilha.

    ResponderEliminar
  4. Optimo post!
    Pergunto-me, será que os três digitos dos cartões de crédito que são usados quanado fazemos compras na net desempenham uma função semelhante?

    ResponderEliminar
  5. Nossa se não fosse o Yousief, nem teria a curiosidade de pesquisar valeu muito bom

    ResponderEliminar