Controlecijfer

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een controlecijfer, checksum en dergelijke zijn systemen om redundantie te creëren in gegevens om het invoeren, lezen, schrijven en verzenden ervan te controleren, op een wijze die efficiënter is dan alles twee keer doen. Er wordt een methode gebruikt die weliswaar geen volledige controle biedt maar de kans groot maakt dat een fout wordt gedetecteerd.

Eén mogelijkheid is dat voor en na de te controleren actie een resultaat wordt berekend (compacter dan de gegevens zelf) en de twee resultaten worden vergeleken.

Een andere mogelijkheid is dat bij een nummering niet alle getallen worden gebruikt. Nadat een gebruiker een nummer heeft ingevoerd wordt een algoritme toegepast om te controleren of het een geldig nummer is.

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.

Getallen en codes waarin checksums voorkomen[bewerken]

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.

Voorbeeld checksum CAS-nummer[bewerken]

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: \sum_{k=1}^8 k \cdot N_k = N_1 + 2 N_2 + 3 N_3 + 4 N_4 + 5 N_5 + 6 N_6 + 7 N_7 + 8 N_8

Als deze rest 10 is wordt een "X" als laatste "cijfer" geschreven.
Voorbeelden:

  • 58\!-\!08\!-\!2 \rightarrow 1 \cdot 8 + 2 \cdot 0 + 3 \cdot 8 + 4 \cdot 5 = 52
    \tfrac{52}{10} geeft als rest 2 (want 10\cdot5=50 en 52-50=2).
  • 9003\!-\!07\!-\!0 \rightarrow 1 \cdot 7+2 \cdot 0+3 \cdot 3+4 \cdot 0+5 \cdot 0+6 \cdot 9=70
    \tfrac{70}{10} geeft als rest 0.