Kontrolsumma — definīcija, aprēķins un pielietojumi

Kontrolsumma — definīcija, aprēķins un pielietojumi: uzzini, kā kontrolsummas (mod 97, Hamming, CRC) atklāj kļūdas un nodrošina banku kontu un programmatūras numuru precizitāti.

Autors: Leandro Alegsa

Kontrolsumma ir papildus cipars vai skaitlis, ko pievieno datu kopai, lai pārbaudītu, vai šie dati nav bojāti vai kļūdaini ierakstīti. Tā darbojas kā vienkārša dublēšanas un integritātes pārbaude: pēc kontrolsummas aprēķināšanas to var salīdzināt ar gaidāmo vērtību, un atšķirība norāda uz iespējamu kļūdu.

Kā darbojas kontrolsumma

Vienkāršākajā formā kontrolsumma var būt vienkāršs ciparu summa vai summa ar atlieku (piemēram, mod 10). Sarežģītākas metodes izmanto svarus, polinomus vai kodus, kas ļauj atklāt vai pat labot konkrētas kļūdas. Kontrolsumma tiek aprēķināta no oriģinālajiem datiem ar noteiktu algoritmu, un tad tā tiek salīdzināta ar saglabāto kontrolsummu.

Vienkāršs piemērs

Ja dati ir 12345 un kā kontrolsumma tiek ņemta ciparu summa mod 10, tad 1+2+3+4+5 = 15, un 15 mod 10 = 5. Ja ierakstītā kontrolsumma neatbilst 5, ir notikusi kļūda.

Piemērs: Portugāles bankas konts (mod 97)

Portugāles banku kontu identifikatori ir labs piemērs tam, kā darbojas kontrolsummas, izmantojot modulāro aritmētiku. Tajos ir 21 cipars. Pirmie 19 cipari identificē banku, filiāli un konta numuru, bet pēdējie divi cipari ir "mod 97" kontrolsumma. Tipisks Portugāles konta numurs tiek pierakstīts kā 0002.0123.12345678901.54.

  • Cipari "0002" apzīmē banku.
  • Cipari "0123" apzīmē bankas filiāli.
  • Cipari "12345678901" ir konta numurs.
  • Cipari "54" ir kontrolsumma.

Ja visu ciparu virkni bez punktiem — 000201231234567890154 — dala ar 97, iegūtais dalījums ir 207458809978249 ar atliku 1. Tā kā atlikums ir "1", konta identifikators ir, visticamāk, pareizs. Ja kāds cipars ir izlaists, apmainīts vai kļūdaini ierakstīts, atlieks parasti nebūs 1, un sistēma var atklāt kļūdu un ziņot par to.

Praktiski lietojot lielus skaitļus mod 97, tos parasti apstrādā pa bloku vai pa secīgiem cipariem, saglabājot starpatliku, lai izvairītos no pārāk lielu skaitļu darbībām. Tas ir efektīvs gan programmatūrā, gan manuālai pārbaudei ar kalkulatoru.

Populāri algoritmi un to īpašības

  • Hamminga kods — kods, kas ļauj ne tikai atklāt, bet arī labot vienu bita kļūdu (un atklāt divus bitu kļūdu). To izmanto datu pārraides un atmiņas ierīču dizainā.
  • Cikliskā redundances pārbaude (CRC) — polinoma bāzēta metode, kas ļoti labi atklāj "burst" (kārtainas) kļūdas datu pārraidē; plaši izmantota tīklu protokolos un failu pārsūtē.
  • Modulārā aritmētika — vienkāršas atlieku metodes (piemēram, mod 97 vai mod 11), ko izmanto bankas kontos, starptautiskajos kontos (IBAN) vai identifikatoros (piem., ISBN). Šīs metodes ļauj ātri pārbaudīt virkni un atklāt daļēju skaitļu kļūdas.
  • Luhn algoritms — vienkāršs svarots algoritems, ko izmanto kredītkartēs; labi atklāj vienu cipara kļūdu un lielāko daļu blakus ciparu apmaiņu (transpozīciju) kļūdu.
  • Kodējošās hešfunkcijas (piem., CRC32, Adler-32) un kriptogrāfiskie heši (MD5, SHA sērija) — nodrošina datu integritātes pārbaudi; kriptogrāfiskie heši arī nodrošina aizsardzību pret ļaunprātīgu datu mainīšanu, ja ir pieejams slepenais atslēgas elements.

Kur izmanto kontrolsummas

  • Banku un maksājumu sistēmas (kontu numuri, IBAN) — lai ātri pārbaudītu, vai konts ir pareizi ievadīts.
  • Datu pārraide (tīkli, seriāls komunikācija) — CRC un citas metodes lai atklātu pārraides kļūdas.
  • Failu pārbaude un saglabāšana — failu integritātes pārbaude, lejupielādes validācija.
  • Programmatūras sērijas numuri un licences — lai pārbaudītu, vai ievadītais kods ir derīgs.
  • Identifikatori (ISBN, pasu numuri, valsts reģistrācijas u.c.) — lai samazinātu drukāšanas vai ievadīšanas kļūdu ietekmi.

Ierobežojumi un drošības apsvērumi

  • Kontrolsummas nodrošina aizsardzību pret nejaušām kļūdām, bet ne pret ļaunprātīgu izmaiņu. Vienkāršas kontrolsummas ir viegli falsificējamas.
  • Ne visas kontrolsummu metodes atklāj visas kļūdu kategorijas. Piemēram, vienkārša ciparu summa ne vienmēr atklāj ciparu apmaiņu vai cipara pārnešanu.
  • Daži algoritmi (piem., Hamming) var arī labot kļūdas, bet tie prasa papildu bitus un sarežģītāku apstrādi.
  • Kriptogrāfiskie heši (SHA, MD5 utt.) nodrošina labāku drošību pret ļaunprātīgu manipulāciju, taču tie nav "kontrolsummas" klasiskajā izpratnē un parasti tiek izmantoti kopā ar drošības mehānismiem (piem., digitālajiem parakstiem).

Kā izvēlēties piemērotu kontroksummu

Izvēle atkarīga no vajadzībām:

  • Vienkārši ievadīšanas kļūdu pārbaude — mod 10 vai Luhn var būt pietiekami.
  • Datu pārraide ar iespēju "burst" kļūdām — CRC ir laba izvēle.
  • Ja nepieciešama kļūdu labošanas spēja — jāizmanto Hamming vai cita korekcijas koda versija.
  • Ja nepieciešama aizsardzība pret ļaunprātīgu izmaiņu — jāizmanto kriptogrāfiskie heši kopā ar autentifikācijas mehānismiem.

Kontrolsummas ir vienkāršs, bet ļoti noderīgs instruments datu integritātes pārbaudē. Izvēloties piemērotu algoritmu un pareizi to piemērojot, var būtiski samazināt kļūdu izplatību un ātri atklāt problēmas gan banku, gan programmatūras, gan telekomunikāciju jomā.

Mūsdienīgs EAN svītrkods: Zaļās krāsas detaļas sauc par starplikām: Tās atdala skaitļu grupas. Katrs numurs ir kodēts ar 7 bitiem, kā parādīts attēlā. Pirmie 11 cipari ir produkta numurs. Pēdējais cipars, šajā gadījumā skaitlis "2", ir kontrolsumma. Kontrolsumma tiek saskaitīta tā, lai pāra pozīciju summa un nepāra pozīciju summa, reizināta ar trīs, modulo 10, būtu 0.Zoom
Mūsdienīgs EAN svītrkods: Zaļās krāsas detaļas sauc par starplikām: Tās atdala skaitļu grupas. Katrs numurs ir kodēts ar 7 bitiem, kā parādīts attēlā. Pirmie 11 cipari ir produkta numurs. Pēdējais cipars, šajā gadījumā skaitlis "2", ir kontrolsumma. Kontrolsumma tiek saskaitīta tā, lai pāra pozīciju summa un nepāra pozīciju summa, reizināta ar trīs, modulo 10, būtu 0.

Jautājumi un atbildes

J: Kas ir kontrolsumma?


A: Kontroles summa ir skaitlis, ko izmanto kā dublēšanas pārbaudi. Tā kalpo, lai pārliecinātos, ka, pierakstot skaitli, nav pieļautas kļūdas.

J: Kā aprēķina kontrolsummas?


A: Kontrolsummas var aprēķināt dažādos veidos, bet visvienkāršākajā veidā ciparus vienkārši saskaita. Tomēr tā nevar atklāt kļūdas, kas saistītas ar ciparu apmainīšanu.

J: Kāds ir piemērs, kā darbojas kontrolsummas?


A: Portugāles bankas konta identifikatori ir labs piemērs, kā darbojas kontrolsummas. Tajos ir 21 cipars, un pēdējie divi cipari ir "mod 97" kontrolsumma, kas balstīta uz modulāro aritmētiku.

J: Kā tas palīdz atklāt kļūdas?


A: Ja kāds cipars ir izlaists, apmainīts vai nepareizi uzrakstīts, tad atlikums nebūs "1". Šādā gadījumā datoram būtu jāatpazīst kļūda un jāsniedz kļūdas ziņojums.

J: Kur vēl izmanto kontrolsummas?


A: Kontrolsummas izmanto arī datoru programmatūras sērijas numuriem.

J: Kas notiek, ja ar kontrolsummu tiek atklāta kļūda?


A: Ja ar kontrolsummu tiek konstatēta kļūda, datoram tā jāatklāj un jāizsniedz kļūdas ziņojums.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3