Kontrollsumma
![]() | Den här artikeln behöver källhänvisningar för att kunna verifieras. (2019-04) Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan. |
Kontrollsumma, engelska checksum, är ett sätt att upptäcka fel i data som tillkommit vid inmatning för hand eller vid kommunikation mellan datorer. Kontrollsumman beräknas med en i förhand specificerad algoritm som är anpassad för att hitta så många fel som möjligt, utan att kräva alltför stor beräkningskapacitet. Nackdelen med enkla kontrollsummor är att de inte skyddar mot avsiktlig manipulation av data, kontrollsummor som är konstruerade för att försvåra detta kallas kryptografiska hashfunktioner.
I det enklaste fallet är kontrollsumman helt enkelt summan av alla i filen ingående bytes. Genom att summera, alternativt [XOR]:a, alla bytes i den lästa filen och jämföra med kontrollsumman kan det uppdagas om den har förvanskats. Sannolikheten för detta är liten, men inte försumbar. En sådan kontrollsumma kallas för en LRC, Longitudinal Redundancy Check. Ett problem är om flera fel uppstått, antingen så att felen tillsammans tar ut varandra vid summering så att kontrollsumman trots allt blir korrekt, eller om ett fel även smugit sig in i kontrollsumman, så att den felaktiga filens summa och den felaktiga kontrollsumman överensstämmer. Den risken är dock mycket liten. Det finns även mer avancerade, och därmed säkrare, sätt att bygga upp kontrollsummor, till exempel CRC, Cyclic Redundancy Check. Med CRC får man i regel en kontrollsumma på två eller fyra bytes, men andra CRC-varianter finns också.
Vid inmatning är det oftast den mänskliga faktorn som orsakar fel, till exempel felaktiga eller omkastade tangentnedtryckningar. Därför används ofta den sista siffran i ett nummer som kontrollsiffra, en kontrollsiffra som beräknas genom en kontrollsummering av de övriga siffrorna i numret. Denna kontrollsummering kan utföras med hjälp av olika algoritmer. En vanlig sådan är Luhn-algoritmen eller former av Moduloräkning.
Exempel på nummer som inkluderar en kontrollsiffra:
- bankgiro
- EAN
- EG-nummer
- ISBN
- kontonummer
- OCR-nummer
- organisationsnummer
- personnummer
- plusgiro
- Sedelnummer
- VIN-kod
Vid dataöverföring eller lagring kan data förstöras på grund av brus, bitröta eller andra störningar. För att kunna upptäcka och eventuellt korrigera dessa fel beräknas även här kontrollsummor. Till exempel används kontrollsummor i IP, på hårddiskar, och i datakommunikationen mellan markstationer och rymdsonder.
Se även
Externa länkar
- Skatteverkets broschyr SKV 704 – Personnummer om hur kontrollsiffran i svenska personnummer beräknas