Cifră de control
Cifra de control este o valoare numerică sau alfanumerică calculată pe baza altor date care este verifică corectitudinea sau integritatea acelor date. Aceasta ajută la detectarea erorilor accidentale de introducere, transmitere sau procesare a informației.[1][2]
Utilizare
[modificare | modificare sursă]Cifrele de control sunt utilizate într-o varietate de domenii, precum:
- Documentele oficiale: cod numeric personal, cod IBAN, numere de cont bancar
- Telecomunicații: pachete de date, adrese MAC, protocoale de rețea
- Identificatori de produse: coduri de bare, numere de serie
- Sisteme de securitate: semnături digitale, algoritmi de criptare
Cifra de control este calculată folosind un algoritm matematic asupra datelor inițiale, precum suma modulară, algoritmul lui Luhn sau algorimti CRC. După calculare, cifra de control este adăugată la datele inițiale. La verificare, sistemul recalculează cifra de control și o compară cu cea existentă pentru a depista eventualele erori.[3][4]
IBAN
[modificare | modificare sursă]IBAN-ul (International Bank Account Number) are două cifre de control, aflate pe pozițiile 3 și 4 ale codului.[5]
- Se mută primele patru caractere (țară și cifrele de control) la sfârșitul codului,
- Se înlocuiesc literele cu numere (A = 10, B = 11, ..., Z = 35).
- Se împarte numărul obținut la 97.
- Dacă restul împărțirii este 1, IBAN-ul este valid. Cifrele de control sunt alese încât să respecte această regulă.
CNP
[modificare | modificare sursă]CNP-ul (Cod Numeric Personal) românesc are o cifră de control pe a 13-a poziție (ultima).
- Fiecare cifră este înmulțită cu corespondentul său din constanta de control „279146358279”.
- Rezultatele sunt adunate și împărțite la 11.
- Dacă restul este între 0-9, cifra de control este egală cu restul.
- Dacă restul este 10, cifra de control devine 1.
EAN-13 și ISBN-13
[modificare | modificare sursă]EAN-13 (European Article Number) și ISBN-13 (International Standard Book Number, formatul nou din 2007) folosesc o cifră de control pe a 13-a poziție (ultima).[6]
- Se adună cifrele de pe pozițiile impare exceptând ultima cifră.
- Se adună cifrele de pe pozițiile pare și se înmulțesc cu 3.
- Se adună cele două rezultate.
- Cifra de control este cifra care, adăugată la suma totală, să fie un multiplu de 10.
ISBN-10
[modificare | modificare sursă]ISBN-10 (International Standard Book Number, format vechi) are o cifră de control pe ultima poziție.
- Se numerotează pozițiile de la dreapta la stânga (cifra de control are poziția 1).
- Se înmulțește fiecare cifră cu poziția sa.
- Se adună toate aceste produse.
- Suma trebuie să fie multiplu de 11 (adică suma modulo 11 = 0).
- Dacă cifra de control este 10, se notează cu litera X.
Design
[modificare | modificare sursă]Algoritmii de verificare a cifrelor sunt în general concepuți pentru a capta erorile de transcriere umană. În ordinea complexității, acestea sunt următoarele:
- erori litere/cifre, cum ar fi I → 1 sau O → 0
- erori de o singură cifră, cum ar fi 1 → 2
- erori de transpunere, cum ar fi 12 → 21 sau 131 → 232
- erori gemene, cum ar fi 11 → 22
- erori fonetice, cum ar fi 60 → 16 („șaizeci” la „șaisprezece”)
Algoritmul Luhn
[modificare | modificare sursă]Algoritmul Luhn (1954) este folosit la numere de carduri de credit sau coduri de identificare.
- Se elimină cifra de control dacă este deja prezentă.
- Se pornește de la dreapta spre stânga:
- Se dublează fiecare a doua cifră.
- Dacă rezultatul este mai mare decât 9, se scade 9 din rezultat (sau se adună cifrele între ele)
- Se adună toate cifrele rezultate.
- Cifra de control este calculată prin ( 10 - ( sumă mod 10)) mod 10
Algoritmul nu va detecta transpunerea secvenței de două cifre de la 09 la 90 (sau invers) sau erorile gemene (22 ↔ 55, 33 ↔ 66, 44 ↔ 77).
Algoritmul Verhoeff
[modificare | modificare sursă]Algoritmul Verhoeff (1969) este un algoritm care detectează mai multe tipuri de erori decât cel Luhn.[7]
- Se folosesc trei tabele: de permutare (p), de inversare (inv), de multiplicate (d) în sistem D5.
- Se inversează cifrația numărului (se citește de la dreapta la stânga).
- Se aplică permutările și multiplicările conform pozițiilor și valorilor.
- Rezultatul final trebuie să fie 0 pentru un număr valid.
- Cifra de control este calculată astfel încât rezultatul să fie 0.
Algoritmul Damm
[modificare | modificare sursă]Algoritmul Damm (2004) este un algoritm care poate detecta erori fără tabele de permutare suplimentare.
- Se folosește o matrice specială de 10x10.
- Se pornește cu un statut inițial de 0
- Pentru fiecare cifră se folosesște statutul curent și cifra pentru a indexa în matrice și a obține noul statut.
- După rezultatul este 0, numărul este valid.
- Dacă rezultatul nu este 0, acea cifră poate fi inclus ca și cifră de control.
Note
[modificare | modificare sursă]- ^ Margaret Rouse (). „What is Check Digit?” (în engleză). Techopedia.
- ^ Dominic Satnoianu. „Cifra de control a unui număr”. InfoAs.
- ^ Michael Damm, H., „Totally anti-symmetric quasigroups for all orders n ≠ 2 , 6”, Discrete Mathematics (în engleză), 307 (6), pp. 715–729, doi:10.1016/j.disc.2006.05.033
- ^ „Checksums and Error Control” (în engleză). doi:10.2174/9781608058822114010013.
- ^ „Validator IBAN”. Wise.
- ^ Chanda, Dr. Anupam (), „Barcode Technology and its Application in Libraries”, SSRN Electronic Journal (în engleză), doi:10.2139/ssrn.3649957, ISSN 1556-5068, accesat în
- ^ Gumm, H., „A new class of check-digit methods for arbitrary number systems (Corresp.)”, IEEE Transactions on Information Theory, 31 (1), pp. 102–105, doi:10.1109/TIT.1985.1056991, ISSN 0018-9448