Kontrolesom

in Wikipedia, die vrye ensiklopedie
Jump to navigation Jump to search
Die UNIX-hulpprogram cksum kan gebruik word om 'n kontrolesom te genereer. Hierdie diagram toon hoe 'n klein verskil in 'n invoerstring groot verskille in die kontrolesom kan genereer.

'n Kontrolesom is 'n vorm van oortolligheidstoets, 'n eenvoudige manier om die integriteit van data te verseker deur foutsporing te doen op data wat versend is (telekommunikasie) of op data wat gestoor is (Rekenaarberging). Dit word gedoen deur die basiese onderdele van 'n boodskap bymekaar te tel, tipies die aangeskakelde bisse, en die stoor van die resulterende waarde. Later kan enigeen dieselfde bewerking op die data uitvoer en die resultaat met die kontrolesom vergelyk en indien die resultate ooreenstem kan daar afgelei word dat daar geen korrupsie van die data plaasgevind het nie.

Binêre kontrolsomme[wysig | wysig bron]

Die eenvoudigste vorm van kontrolesom is waar die aangeskakelde bisse (die 1ne) in die data bymekaargetel word. Met hierdie soort kontrolesom kan die aantal of soorte foute nie bespeur word nie. So 'n kontrolesom word veral nie deur die volgende foute verander nie:

  • die herrangskikking van die bisse in die boodskap
  • die invoeging of uitvee van nulwaarde bisse
  • veelvuldige foute wat optel tot nul

'n Voorbeeld van 'n eenvoudige kontrolesom is:

Gegewe 4 grepe data : 25h, 62h, 3Fh, 52h

Stap 1: Die bymekaartel van al die grepe gee 118h.
Stap 2: Laat die halwe greep wat oorgedra word weg om 18h te lewer.
Stap 3: Verkry die komplement van twee van die 18h wat E8h lewer. Dit is dan die kontrolesomgreep.

Om die Kontrolesomgreep te toets voeg dit eenvoudig by die oorspronklike groep grepe. Dit behoort die getal 200h te lewer. Laat weer die halwe greep wat oorgedra is weg en dit sal 00h lewer. Aangesien dit 00h is beteken dit dat die grepe waarskynlik onveranderd is.

Meer verfynde soorte oortolligheidstoetse bestaan, insluitend Fletcher se kontrolesom, Adler-32 en sikliese oortolligheidstoetse wat ontwerp is om die gebreke aan te spreek deur nie net die waarde van elke greep in berekening te bring nie, maar ook die posisie daarvan. Die nadeel verbonde aan die vermoë om meer soorte foute te kan opspoor is die gevolglike verhoogde kompleksiteit verbonde aan die berekening van die kontrolesom.

Hierdie soorte oortolligheidstoetse is nuttig in die opspoor van veranderings in data wat per abuis plaasvind soos tydens die korrupsie van gestoorde data of foute tydens die oordrag van 'n kommunikasiesein. Hulle beskerm egter nie teen die kwaadwillige verandering van data nie aangesien hulle eenvoudige wiskundige struktuur dit maklik maak om hulle te flous. Om hierdie vlak van data-integriteit te verseker word die gebruik van 'n kriptografiese hashfunksie, soos SHA-256, benodig. In Unix is daar 'n hulpmiddel genaamd "cksum" wat beide 'n 32 bis CRC (sikliese oortolligheidstoets) en 'n greeptelling vir enige toevoerlêer kan lewer.

Desimale kontrolsomme[wysig | wysig bron]

Kontrolsomme word dikwels gebruik saam met desimale getalle - byvoorbeeld om te verseker dat die bankrekeningnommers behoorlik oorgeskryf is.

Luhn-algoritme (kredietkaarte ens)[wysig | wysig bron]

Die Luhn-algoritme word gebruik om reeksnommers in baie industrieë teen toevallige transkripsiefoute te verifieer. Die meeste kredietkaarte gebuik hierdie algoritme. Die algoritme is:

1. Begin aan die regterkant van die nommer, word elke eweredige syfer verdubbel. As die waarde daarvan groter is as 9, word die twee syfers bymekaar getel.
2. Hierdie waardes word by die onewe genommerde syfers gevoeg.
3. As die totaal met 10 deelbaar is, is die getal waarskynlik korrek getranskribeer. As die totaal nie met 10 verdeelbaar is nie, is daar 'n fout.
Voorbeeld om die Luhn-algoritme kontrolesom te bewys
met die nommer is 9826 1577 5910 0895
Syfer nommer (eweredige vetgedruk) 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Syfer 9 8 2 6 1 5 7 7 5 9 1 0 0 8 9 5
Verdubbeling van vetdruk syfers 18 8 4 6 2 5 14 7 10 9 2 0 0 8 18 5
Vermindering tot enkel syfers 9 8 4 6 2 5 5 7 1 9 2 0 0 8 9 5
Aantal van laaste ry 80

Aangesien the aantal 80 deur 10 deelbaar is, is die nommer waarskynlik korrek getranskribeer. Daar is 'n paar foute wat hierdie algoritme nie sal opspoor nie.

ISBN in die boekhandel[wysig | wysig bron]

Modulo-97 in die bankbedryf[wysig | wysig bron]

In sommige lande is 'n modulo-97 kontrolsom vir bankrekeningnommers gebruik. Voordat hulle die IBAN gebruik het, gebruik 'n antal lande onder andere België, Frankryk en Portugaal 'n modulo-97 kontrolsomsisteem. Wneer 'n mens geld wil stuur na 'n ander persoon se bankrekening, moet hulle 'n enkele bankrkeninggetal aangee wat 'n samesmelting is van die banktaknommer, die bankrekeningnommer en 'n mod-97 kontrolsom. Die kontrolsom sorg dat waneer die hele getal deur 97 gedeel is, is die restant altyd 1. Stel voor dat die banktaknommer 123 is, dat dir rekeningnommer 987 is, dan sal die bankrekeninggetal 12398735 wees. Die nommer "35" is gekies omdat

of lievers

.

Aangesien dat die restant "1" is, is hierdie bankrekeninggetal geldig.

Die kontrolesumalgoritme wat vir die IBAN gebruik word, is 'n aanpassing van hierdie konsep.

Sien ook[wysig | wysig bron]