En kontrolsum er en numerisk værdi, der tjener som en kompakt repræsentation af indholdet af en datablok. Den beregnes ved at anvende en funktion til datablokken og generere en outputværdi med fast størrelse. Hovedformålet med en kontrolsum er at opdage fejl, der kan være opstået under overførsel eller lagring af data.
Ved at sammenligne kontrolsummen af en modtaget datablok med kontrolsummen beregnet ud fra de originale data, kan man afgøre, om dataene er blevet beskadiget eller ej. Hvis kontrolsummerne stemmer overens, er det højst sandsynligt, at dataene er intakte. På den anden side, hvis kontrolsummerne er forskellige, indikerer det, at dataene er blevet ændret, og at der muligvis skal træffes korrigerende foranstaltninger.
Der er flere forskellige checksum-algoritmer, hver med sine egne styrker og svagheder. Nogle almindelige kontrolsumalgoritmer inkluderer:
1. Cyclic Redundancy Check (CRC): CRC er en udbredt checksum-algoritme, der er baseret på polynomiel division. Den genererer en kontrolsum ved at dividere datablokken med et foruddefineret divisorpolynomium og tage resten af divisionen. CRC er kendt for sine gode fejldetektionsmuligheder og bruges ofte i forskellige datakommunikations- og lagringssystemer.
2. Adler-32: Adler-32 er en enkel og hurtig kontrolsum-algoritme, der almindeligvis bruges i zlib-komprimeringsbiblioteket. Den beregner en kontrolsum ved at akkumulere en løbende sum af databytes, ved at anvende modulo 65521 ved hvert trin. Selvom Adler-32 ikke er så robust som CRC, giver den en god afvejning mellem ydeevne og fejldetektionsmuligheder.
3. MD5 (Message Digest 5): MD5 er en kryptografisk hashfunktion, der også kan bruges til kontrolsum formål. Den genererer en 128-bit digest-værdi fra en datablok og er kendt for sin stærke modstand mod kollisioner. MD5 er dog beregningsmæssigt mere intensiv sammenlignet med CRC eller Adler-32.
4. SHA-256 (Secure Hash Algorithm 256): SHA-256 er en anden kryptografisk hash-funktion, der giver en 256-bit digest-værdi. Den er mere sikker og kollisionsbestandig sammenlignet med MD5, men den er også mere beregningsmæssigt dyr.
Beregning af kontrolsummer:
Beregning af en kontrolsum involverer anvendelse af den valgte kontrolsumalgoritme på en given datablok og generering af den tilsvarende kontrolsumværdi. Her er de generelle trin til beregning af en kontrolsum:
1. Vælg en kontrolsumalgoritme: Vælg en passende kontrolsumalgoritme baseret på det påkrævede niveau af fejldetektion og ydeevneovervejelser.
2. Initialiser kontrolsummen: Initialiser kontrolsum-variablen til en specifik startværdi som defineret af den valgte algoritme.
3. Behandle dataene: Gentag datablokken og opdater checksum-variablen i henhold til algoritmens regler.
4. Afslut kontrolsummen: Fuldfør checksumberegningen ved at bruge de sidste trin, der er angivet af algoritmen.
5. Hent kontrolsumværdien: Den resulterende kontrolsumvariabel indeholder kontrolsumværdien for datablokken.
Ved at indarbejde kontrolsummer i datatransmissions- og lagringssystemer er det muligt at opdage fejl, der kan opstå under datahåndteringen og sikre integriteten af de informationer, der behandles.