Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


Kontrolinė suma

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search

Kontrolinė suma - tai tokia suma, kuri leidžia patikrinti, ar perduotas skaičius (ar šiaip kokie tai duomenys) yra teisingas, ar kažkaip tai pakeistas. Tokiu būdu, perduodant kažką su kontrolinėmis sumomis, galima nustatyti, ar kas nors nepakeitė mūsų gaunamo pranešimo ar šiaip koks nors triukšmas į tą pranešimą neįsimaišė.

Kontrolinė suma gali būti skaičiuojama, tiesiog sumuojant visus baitus su perkrovimu (overflow), nes tai yra paprasčiausia, bet kadangi baitai yra nesuprantami, tai paaiškinsim bendrą kontrolinių sumų principą paprasčiau.

Tarkim, turim kokį nors skaičių, pvz., 1234. Tai tiesiog sudedam visus to skaičiaus skaitmenis, kad ir tokiu būdu: 1+2+3+4=10. Kadangi gavosi skaičius, kuriame yra daugiau kaip vienas skaitmuo, tai sudedam jo skaitmenis: 1+0=1. Štai taip gavome kontrolinę sumą, kuri yra 1.

Jei mūsų skaičius būtų buvęs koks nors kitas, pvz., 1111, tai kontrolinė suma būtų gausis kita - pvz., 4.

Aišku, kadangi čia turim vos vieno skaitmens kontrolinę sumą, tai yra labai didelė tikimybė (maždaug 1/10), kad tą pačią kontrolinę sumą turės ir koks nors kitas skaičius. Kaip pvz., tą patį 1 duos ir skaičius 1000, ir skaičius 9001, ir skaičius 4321. Tačiau taip ar kitaip, su gana didele tikimybe visgi pastebėsime, kad kažkas su skaičiumi buvo pakeista.

Praktikoje, aišku, naudojami daug daug didesni skaičiai, nei vieno skaitmens. Jei padarysime skirtingų ilgių kontrolines sumas, tai tikimybės joms netyčia atitikti bus maždaug tokios:

  • 8 bitai arba 1 baitas, tai tikimybė jai atsitiktinai atitikti bus 2^8 arba 1/256
  • 16 bitų arba 2 baitai, tai tikimybė jai atsitiktinai atitikti bus 2^16 arba 1/65536
  • 32 bitai arba 4 baitai, tai tikimybė jai atsitiktinai atitikti bus 2^32 arba 1/4294967296
  • 64 bitai arba 8 baitai, tai tikimybė jai atsitiktinai atitikti bus 2^64 arba 1/18446744073709551616
  • 128 bitai arba 16 baitų, tai tikimybė jai atsitiktinai atitikti bus 2^128 arba 1/melejono

Aišku, visai kitas reikalas yra tai, kad tos kontrolinės sumos gali būti lengviau ar sunkiau falsifikuojamos, tyčia pakaitaliojant kokius nors dalykus tuose duomenyse, iš kurių tos sumos yra skaičiuojamos. Tačiau ir tokiu atveju yra gudresnių sprendimų, pvz., panaudoti kelias skirtingais būdais naudojamas kontrolines sumas, o taip pat turėti išskaidytą kontrolinių sumų rinkinį su tarpusavio kontrolinėmis sumomis.


Dar žr.