Checksum
Van Wikipedia
Checksum staat voor controle getal of controlesom.
Veel manieren van gegevensopslag of transport zijn niet 100% betrouwbaar. Om te kunnen controleren of er bij opslag of transport een fout opgetreden is kan een checksum worden toegevoegd. Achteraf wordt de checksum opnieuw berekend en vergeleken met de opgeslagen of meegestuurde versie. Als de twee niet overeenkomen is er een fout opgetreden. De foutdetectie van een checksum is vrij beperkt, bij een dubbele fout zal de checksum wel kunnen kloppen. De meest eenvoudige checksum is het pariteitsbit dat slechts een enkel bit omvat.
Een meer geavanceerde methode van foutherkenning is de Cyclic Redundancy Check of CRC. Met nog betere methodes zoals de Hammingcode kan de fout niet alleen gevonden maar ook hersteld worden.
[bewerk] Getallen en codes waarin checksums voorkomen
- streepjescode
- ISBN
- CAS-nummer
- EG-nummer
- serienummers van bankbiljetten
- bankrekeningnummers en sofinummers (zie Elfproef)
Men kwam checksums in de tijd van de homecomputer ook vaak tegen bij programma's in hexadecimale machinetaal of BASIC die vroeger vanaf papier ingegeven moest worden. Het is een aparte code die vaak aan het eind van een invoer regel volgde en het product is van de controle getalswaarde. Als een van de invoer tekens niet klopt, wordt uitvoer geweigerd en kun je pas verder als na correctie wel de juiste tekens op een rijtje staan.
Een streepjescodelezer, zoals bij de kassa van de supermarkt, piept als hij een code gelezen heeft. Piept hij niet, dan is er wellicht een fout in de controlesom ontstaan door een leesfout. Het probleem is snel verholpen door het nog eens te proberen.
[bewerk] Voorbeeld checksum CAS-nummer
Dit nummer bestaat uit maximaal 9 cijfers, verdeeld in 3 groepjes die gescheiden zijn met een streepje. Het meest rechtse cijfer (R) is de uitkomst van de checksum en is de rest, die wordt bepaald door de volgende formule gedeeld door 10: N1 + 2×N2 + 3×N3 + 4×N4 + 5×N5 + 6×N6 + 7×N7 + 8×N8. Als deze rest 10 is wordt een "X" als laatste "cijfer" geschreven.
Voorbeelden:
- 58-08-2 → 1x8+2x0+3x8+4x5=52 52/10 geeft als rest 2 (10x5=50 52-50=2)
- 9003-07-0 → 1x7+2x0+3x3+4x0+5x0+6x9=70 70/10 geeft als rest 0