Sumy kontrolne

Transkrypt

Sumy kontrolne
http://forum.msstudio.com.pl/kody.php?tytul=Sprawdzanie%20poprawno%C2%9Cci%20Sum%20Kontrolnych
Sumy kontrolne
Weryfikacja numerów kart kredytowych
Weryfikacja numerów kont bankowych
Weryfikacja numerów identyfikacyjnych płatników - NIP
Weryfikacja numerów identyfikacyjnych - PESEL
Weryfikacja numerów identyfikacyjnych - REGON
Międzynarodowy system numeracji książek - ISBN
Międzynarodowy system numeracji czasopism - ISSN
International Standard Music Number - ISMN
Międzynarodowy system kodów kreskowych - EAN13
Międzynarodowy skrócony system kodów kreskowych - EAN8
Trochę historii
W systemach narażonych na błędy stosuje się pewien sposób nadmiarowego zapisu danych tak
aby ewentualne błędy mogły być zauważone. W zapisach na taśmach perforowanych (czy ktoś
jeszcze pamięta, że w Polsce produkowano prawdziwe komputery ODRA ?) każdy znak ASCII
był kodowany w siedmiu bitach. Bit 1 to była dziurka, bit 0 to był brak dziurki w odpowiedniej
pozycji. W ósmym bicie, tzw. bicie parzystości kodowano czy w siedmiu bitach była parzysta
czy nieparzysta liczba dziurek.
Jeśli była nieparzysta to na ósmej pozycji taśma była dziurkowana, w przeciwnym
przypadku na ósmej pozycji nie było dziurki.
Krótka analiza powyższego zdania prowadzi do wniosku, że gdy sie wzięło pod uwagę
wszystkie bity-dziurki to była ich zawsze parzysta liczba. Wbudowanie odpowiedniej
elektroniki do czytnika taśmy, która by sprawdzała parzystość nie była trudna. Jeśli do taśmy
przyczepił się jakiś paproszek i podczas czytania zatkał jedną z dziurek to czytnik łatwo to
wykrywał. W ten sposób do komputera nie przedostawały się 'brudne' dane :-).
(Na ilustracji obok widać jeszcze rządek mniejszych dziurek; jest to tzw. ścieżka prowadząca,
która dla czytnika mechanicznego spełniała rolę perforacji jak na taśmie filmowej, natomiast
dla czytnika optycznego pełniła rolę synchronizatora i wskaźnika braku uszkodzeń taśmy.)
Przy 'ręcznym' wprowadzaniu danych często popełnia się błędy np. zamiany kolejności cyfr lub
błędnego rozpoznania niewyraźnie napisanej cyfry w formularzu. Aby częściowo zapobiec tym
błędom, a właściwie aby nie przepuścić takich błędów i nie wprowadzić błędnegu numeru do
komputera stosuje się właśnie cyfrę kontrolną.
Jak obliczyć cyfrę kontrolną?
Nasuwa się tu prosty algorytm:
•
•
sumujemy wszystkie cyfry z całego numeru,
jak cyfrę kontrolną bierzemy ostatnią cyfrę z tej sumy.
Algorytm jest bardzo prosty, ale nie bierze pod uwagę, że przy tzw. czeskim błędzie (zamiana kolejności
cyfr lub liter przy szybkim wprowadzaniu danych z klawiatury) suma cyfr wyjdzie taka sama. A więc
algorytm by nie wykrył czeskich błędów.
Strona 1 z 11
Dlatego wprowadzono modyfikację i nie sumuje się cyfr ale iloczyny cyfr i współczynników wagowych. A
na sumie wykonuje się dzielenie modulo (jest to reszta z dzielenia. Przykład 13 mod 6 = 1). Ażeby algorytm
wykrywał czeskie błędy współczynniki wagowe dla sąsiednich cyfr powinny sie różnić i żaden
współczynnik nie może być zerem.
Integralność danych jest bardzo istotnym elementem w świecie informacji. Z tego powodu aby zabezpieczyć
dane przed błędami podczas przepisywania stosuję się różnego rodzaju sumy kontrolne. Poniżej
zamieszczam opis procedur do sprawdzania sum kontrolnych w niektórych numerach identyfikacyjnych
spotykanych w życiu codziennym.
Weryfikacja numerów kart kredytowych
Numer karty kredytowej składa się z szesnastu cyfr. Początkowe sześć cyfr to numer identyfikujący bank,
który wydał kartę. Kolejne dziewięć cyfr ustala sam bank wydający kartę, a ostatnia cyfra jest cyfrą
kontrolną. Aby zweryfikować poprawność numeru musimy postąpić według następujących zasad (stosuje
się zmodyfikowany algorytm zwany metodą Luhna):
1.
2.
3.
4.
5.
pomnożyć kolejne cyfry przez odpowiednie wagi
jeśli wynik mnożenia jest większy od 10 należy od otrzymanej liczby odjąć 9
wyniki mnożenia po wykonaniu korekty (2) należy zsumować
sumę należy podzielić modulo przez 10
jeśli reszta wynosi 0 to numer karty jest poprawny
Przykład:
Numer: 4927 1234 1234 1234
Wagi:
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
Numer:
4
9
2
7
1
2
3
4
1
2
3
4
1
2
3
4
Korekta:
8
9
4
7
2
2
6
4
2
2
6
4
2
2
6
4
Wynik:
8 + 9 + 4 + 7 + 2 + 2 + 6 + 4 + 2 + 2 + 6 + 4 + 2 + 2 + 6 + 4 = 70
70 mod 10 = 0 (cyfra kontrolna prawidłowa)
Uwaga: numery kart kredytowych - algorytm się różni w kilku szczegółach od przedstawionego powyżej sprawdzony dla współcześnie wydawanych przez PKO kart VISA i VISA Electron - teoretycznie tajny :).
Weryfikacja numerów kont bankowych
Numer Konta Bankowego zakładanego w każdym banku składa się z ośmiu cyfr. Pierwsze siedem
identyfikuje konto bankowe, a ostatnia ósma jest sumą kontrolną. Aby obliczyć sumę kontrolną należy
postąpić zgodnie z algorytmem:
1.
2.
3.
4.
przemnożyć kolejne cyfry przez odpowiednie wagi
zsumować wyniki mnożenia
podzielić modulo przez 10
otrzymany wynik jest sumą kontrolną
Strona 2 z 11
Przykład:
Konto: 10103421
Wagi:
7
1
3
9
7
11
3
Konto:
1
0
1
0
3
4
2
Wynik:
7 + 0 + 3 + 0 + 21 + 44 + 6 = 81
81 mod 10 = 1 (cyfra kontrolna 1)
Dla numeru rachunku bankowego IBAN
Nowe oznakowanie rachunków bankowych jest już prawie zgodne z tym systemem. Dwie początkowe
cyferki to właśnie cyfry kontrolne.
65 1060 0076 0000 3200 0005 7153
Aby uzyskać pełną zgodność należy dodać przed numerem litery PL.
PL65 1060 0076 0000 3200 0005 7153
Numery systemu IBAN (International Bank Account Number) zostały wprowadzone normą ISO-13616 w
celu weryfikacji numerów kont bankowych w międzynarodowym przepływie pieniędzy. Numer IBAN
składa się z dwuliterowego kodu kraju według normy ISO-3166 (dla Polski są to litery PL), dwucyfrowej
liczby kontrolnej oraz numeru konta bankowego BBAN według systemu wybranego w danym kraju i
danym banku. Numer konta BBAN może być dowolnej długości (do 30 znaków) ale długość musi być stała
dla danego kraju. Numer konta może zawierać cyfry 0-9 i wielkie litery alfabetu łacińskiego A-Z. Do celów
prezentacyjnych np. na wydrukach można numer IBAN dzielić na grupy 4-ro znakowe oddzielając je
znakiem spacji.
Przyjęty przy weryfikacji system cyfr kontrolnych zgodny z ISO-7064 nie posługuje się wagami, ale traktuje
numer IBAN jako liczbę całkowitą, która powstaje przez przesunięcie 4 początkowych znaków na koniec
(kod kraju i dwucyfrowa liczba kontrolna), zamianę liter łacińskich A-Z na liczby całkowite od 10 do 35.
Weryfikacja składa się z następujących kroków:
krok wstępny : usuń niealfanumeryczne znaki - np. spacje, myślniki itd.
krok 1 : przesuń 4 pierwsze znaki na koniec,
krok 2 : zamień litery na dwucyfrowe liczby; A=10, B=11, ... Y=34, Z=35
krok 3 : podziel całkowicie liczbę z kroku 2 przez 97,
krok 4 : jeśli reszta z dzielenia wyniosła 1 to numer IBAN jest prawidłowy.
Wyliczanie cyfr kontrolnych
Wyliczenie składa się z następujących kroków:
krok wstępny : utwórz numer IBAN wraz z kodem kraju, a w miejscu cyfr kontrolnych wstaw 00
krok 1 : przesuń 4 pierwsze znaki na koniec,
krok 2 : zamień litery na dwucyfrowe liczby; A=10, B=11, ... Y=34, Z=35
krok 3 : podziel całkowicie liczbę z kroku 2 przez 97 i resztę z dzielenia odejmij od 98,
krok 4 : jeśli reszta z dzielenia jest jednocyfrowa to dopisz 0 przed tą cyfrą.
Przykład
krok wstępny:
BE62 5100 0754 7061
krok 1
BE62510007547061
staje się BE62510007547061
staje się 510007547061BE62
Strona 3 z 11
krok 2
literę B zamieniamy na 11, literę E zamieniamy na 14
510007547061BE62
staje sie 510007547061111462
krok 3
Obliczamy resztę z dzielenia;
jeśli reszta =1 to numer jest dobry
krok 4
510007547061111462 MOD 97 = 1 czyli dobry
Uwaga: tak długie liczby całkowite nie dają się przedstawić dokładnie w typowym języku programowania.
W trakcie obliczeń należy podzielić długi ciąg cyfr na mniejsze porcje i na nich zrobić obliczenia w trybie
tak jak to się robi na papierze. Liczba cyfr w podzielonych liczbach zależy od typu całkowitoliczbowego
jaki wybierzemy do reprezentacji tych liczb.
123456789012 dzielimy na dwie liczby:
123456 i 789012
123456 MOD 97 = 72
resztę z dzielenia dopisujemy na początku drugiego kawałka
72789012 MOD 97 = 18 to jest właśnie wynik dzielenia
całkowitego liczby 123456789012 przez 97
Weryfikacja numerów identyfikacyjnych płatników - NIP
NIP (Numer Identyfikacyjny Płatnika) jest numerem identyfikującym osoby lub podmioty gospodarcza w
systemie rozliczeń podatkowych. Numer ten jest przydzielany przez odpowiedni Urząd Skarbowy każdemu
płatnikowi. Składa się on z dziesięciu cyfr. Pierwsze dziewięć cyfr identyfikuje płatnika, ostatnia jest cyfrą
kontrolną. Aby sprawdzić poprawność numeru należy użyć następującego algorytmu:
1.
2.
3.
4.
pomnożyć kolejne cyfry przez odpowiednie wagi
następnie sumujemy wyniki mnożenia
wynik sumowania dzielimy modulo przez 11
otrzymana cyfra jest sumą kontrolną NIP'u
Przykład:
NIP: 123-456-32-18
Wagi:
6
5
7
2
3
4
5
6
7
NIP:
1
2
3
4
5
6
3
2
1
Wynik:
6 + 10 + 21 + 8 + 15 + 24 + 15 + 12 + 7 = 118
118 mod 11 = 8 (cyfra kontrolna 8)
Weryfikacja numerów identyfikacyjnych - PESEL
Numer PESEL (Powszechny Elektroniczny System Ewidencji Ludności) jest przyznawany każdemu
mieszkańcowi Polski. Numer ten składa się z jedenastu cyfr. Pierwsze sześć cyfr to data urodzenia w
formacie yy-mm-dd. Dla osób urodzonych w latach 1900 do 1999 - miesiąc zapisywany jest w sposób
naturalny. Dla odróżnienia osób urodzonych w innych latach niż 1900-1999 dodawane są do numeru
miesiąca następujące wielkości:
•
•
•
•
dla lat 1800-1899 - 80
dla lat 2000-2099 - 20
dla lat 2100-2199 - 40
dla lat 2200-2299 - 60
Strona 4 z 11
Cztery kolejne to numer identyfikacyjny. Przedostatnia (dziesiąta) cyfra zawiera dodatkowo informację o
płci osoby: nieparzysta - mężczyzna, parzysta - kobieta. Ostatnia jedenasta cyfra jest sumą kontrolną. Aby
zweryfikować numer należy postąpić według zasad:
1. pomnożyć kolejne cyfry przez odpowiednie wagi
2.
3.
4.
5.
następnie sumujemy otrzymane wyniki
dzielimy modulo przez 10
otrzymany wynik odejmujemy od 10
wynik odejmowania jest cyfrą kontrolną
o jeśli wynik =10 wtedy jako cyfrę kontrolną wstawiamy 0
Przykład:
PESEL: 77050544718
Wagi:
1
3
7
9
1
3
7
9
1
3
PESEL:
7
7
0
5
0
5
4
4
5
1
Wynik:
7 + 21 + 0 + 45 + 0 + 15 + 28 + 36 + 7 + 3 = 162
162 mod 10 = 2
10 - 2 = 8 (cyfra kontrolna 8)
Weryfikacja numerów identyfikacyjnych - REGON
Regon jest numerem identyfikującym podmioty gospodarcze w Polskim Rejestrze Gospodarki Narodowej.
Numer ten jest wydawany przy uruchamianiu działalności. Składa się on z dziewięciu cyfr. Pierwsze osiem
identyfikuje podmiot, a ostatnia dziewiąta cyfra jest sumą kontrolną. Aby sprawdzić poprawność numeru
należy postąpić w następujący sposób:
1.
2.
3.
4.
pomnożyć kolejne cyfry przez odpowiadające im wagi
zsumować wyniki mnożenia
wynik sumowania podzielić modulo przez 11
otrzymana liczba jest cyfrą kontrolną
Przykład:
REGON: 123456785
Wagi:
8
9
2
3
4
5
6
7
REGON:
1
2
3
4
5
6
7
8
Wynik:
8 + 18 + 6
+ 12 + 20 + 30 + 42 + 56 = 192
192 mod 11 = 5 (cyfra kontrolna 5)
Międzynarodowy system numeracji książek - ISBN
Międzynarodowy system numeracji książek ISBN - International System Book Number. Numer ten jest
umieszczony na każdej wydanej książce. Składa on się z dziesięciu cyfr - pierwsze dziewięć jest unikalne
dla książki, a ostatnia jest sumą kontrolną obliczoną według następującego algorytmu:
1. poszczególne cyfry są mnożone przez odpowiadające im wagi, a następnie sumowane
Strona 5 z 11
2. sumę należy podzielić modulo przez 11
3. od 11 należy odjąć wynik operacji modulo
o jeśli wynik =11 wtedy jako cyfrę kontrolną wstawiamy 0
o jeśli wynik =10 wtedy jako cyfrę kontrolną wstawiamy duże X
o w pozostałych przypadkach wynik jest cyfrą kontrolną
4. porównujemy otrzymany wynik z ostatnią cyfrą - różnica oznacza błąd
Przykład:
ISBN:
83-204-2176-4
Wagi:
10
9
8
7
6
5
4
3
2
8
3
8
5
7
8
4
2
5
ISBN:
*
Wyniki:
80 + 27 + 64 + 35 + 42 + 40 + 16
+ 6 + 10 = 320
320 mod 11 = 1
11 - 1 = 10 (cyfra kontrolna X)
Dwie pierwsze cyfry = 83 oznaczają książkę wydaną w Polsce.
Międzynarodowy system numeracji czasopism - ISSN
Międzynarodowy system numeracji czasopism ISSN - International System Standard Number. Numer ten
jest umieszczony na każdym wydanym czasopiśmie. Składa on się z ośmiu cyfr - pierwsze siedem jest
unikalne dla czasopisma, a ostatnia jest sumą kontrolną obliczoną według następującego algorytmu:
1.
2.
3.
4.
kolejne 7 cyfr numeru mnożymy przez wagi
które wynoszą kolejno 8, 7, 6, 5, 4, 3, 2
sumę dzielimy Modulo 11
wynik odejmujemy od 11
o jeśli wynik =11 wtedy jako cyfrę kontrolną wstawiamy 0
o jeśli wynik =10 wtedy jako cyfrę kontrolną wstawiamy duże X
o w pozostałych przypadkach wynik jest cyfrą kontrolną
Przykład:
ISSN:
0867-0153
Wagi:
8
7
6
5
4
3
2
ISSN:
* 0
8
6
7
0
1
5
Wyniki:
0 + 56 + 36 + 35 + 0 + 3 + 10 = 140
140 mod 11 = 8
11 - 8 = 3 (cyfra kontrolna 3)
International Standard Music Number - ISMN
International Standard Music Number - ISMN to numer publikacji muzycznej. Zaczyna się literš M, po
której następuje 9 cyfr. Dla numeru ISMN obliczenia przeprowadzamy w następujący sposób:
1. literę M zamieniamy na cyfrę 3,
Strona 6 z 11
2.
3.
4.
5.
obliczamy sumę iloczynów cyfr przez ich wagi
wagi wynoszą kolejno 3,1,3,1,3,1,3,1,3
sumę dzielimy Modulo 10
odejmujemy tę wartość od 10
Przykład:
ISMN:
M9005202-2-7
Wagi:
3
1
3
1
3
1
3
1
3
ISMN:
* 3
9
0
0
5
2
0
2
2
-------------------Wyniki:
9 + 9 + 0 + 0 + 15 + 2 + 0 + 2 + 6 = 33
33 mod 10 = 3
10 - 3 = 7 (cyfra kontrolna 7)
Międzynarodowy system kodów kreskowych - EAN13
Numer EAN13 to ten numer pisany pod kodem kreskowym. Nadawaniem numerów EAN zajmuje się w
Polsce Centrum Kodów Kreskowych w Instytucie Logistyki i Magazynowania w Poznaniu.
Dla numeru EAN13 obliczenia przeprowadzamy w następujący sposób:
1.
2.
3.
4.
5.
zsumować wartości cyfr na miejscach parzystych,
pomnożyć wynik pozycji 1. przez liczbę 3,
zsumować wartości cyfr na miejscach nieparzystych, zaczynając od miejsca trzeciego,
zsumować wyniki pozycji 2. i 3.,
cyfrą kontrolną jest najmniejsza liczba, która po dodaniu do wyniku pozycji 4. tworzy liczbę będącą
wielokrotnością liczby 10.
* Uwaga: W powyższym algorytmie cyfry w numerze numeruje się od prawej. Cyfra kontrolna ma więc
numer 1.
Ten trochę zawiły opis można zamienić na poniższy algorytm:
1.
2.
3.
4.
obliczamy sumę iloczynów cyfr przez ich wagi,
wagi wynoszą kolejno 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3
sumę dzielimy Modulo 10,
jeśli wynik jest różny od 0 to wynik odejmujemy od 10
Przykład:
EAN13:
5 901234 123457
Wagi:
1
3
1
3
1
3
1
3
1
3
1
3
* 5
9
0
1
2
3
4
1
2
3
4
5
EAN13:
Wynik:
5 + 27 + 0 + 3 + 2 + 9 + 4 + 3 + 2 + 9 + 4 + 15 = 83
83 mod 10 = 3
10 - 3 = 7 (cyfra kontrolna 7)
Międzynarodowy skrócony system kodów kreskowych - EAN8
Strona 7 z 11
Dla numeru EAN8 obliczamy sumę iloczynów cyfr przez ich wagi:
1. wagi wynoszą kolejno 3, 1, 3, 1, 3, 1, 3
2. sumę dzielimy Modulo 10
3. jeśli wynik jest różny od 0 to wynik odejmujemy od 10
Przykład:
EAN8:
5901 2344
Wagi:
3
1
3
1
3
1
3
EAN8:
* 5
9
0
1
2
3
4
Wyniki:
15 + 9 + 0 + 1 + 6 + 3 + 12 = 46
46 mod 10 = 6
10 - 6 = 4 (cyfra kontrolna 4)
Zebrał i skorygował R.J.Żyłła z wielu rozproszonych źródeł w Internecie.
Aktualną wersję oraz program on-line do weryfikacji przedstawionych kodów
można znaleźć na stronie autora Weryfikacja kodów. Copyright (C) 1999-2001
Co to jest cyfra kontrolna?
R.J.Żyłła - na podstawie wielu źródeł w internecie.
Poprawione algorytmy i programy.
¤ Trochę historii
¤ Cyfra kontrolna w numerach ewidencyjnych
¤ Jak obliczyć cyfrę kontrolną?
¤ Numer PESEL
¤ Czy ten algorytm jest optymalny?
¤ Ciekawostki w kodowaniu numeru PESEL
¤ Inne numery
¤ NIP REGON REGON14
¤ ISBN ISMN ISSN
¤ EAN13 EAN8
¤ IACS - numery kolczyków krów
¤ numer identyfikacyjny gospodarstwa
¤ BANK IBAN KARTY KREDYTOWE
¤ Numery recept (Dz. U. Nr 85, poz. 785)
¤ Numery Prawa Wykonywania Zawodu lekarza
¤ Paszporty, dowody ... Nowość
¤ Syntetyczne podsumowanie algorytmów
¤ Słowniczek pojęć
¤ Gotowy program do weryfikacji (download)
¤ JavaScript do weryfikacji
¤ Lektura dodatkowa
¤ Kody terytorialne GUS
¤ Tablice rejestracyjne pojazdów
Co mają wspólnego numery PESEL, NIP, REGON, numer konta bankowego, Dowodu
Strona 8 z 11
Osobistego, paszportu, ISBN, EAN13, EAN8, IACS ? Oto typowe odpowiedzi:
•
•
•
•
•
numery identyfikacyjne są używane przez komputery zamiast nazw, bo komputery
działają na liczbach
zawierają cyfry i myślniki, ale różnią się długością,
jeśli traktować je jako liczby to muszą być większe niż liczba elementów im
przyporządkowanych,
grupy cyfr w tych numerach określają cechy obiektów identyfikowanych,
są niepowtarzalne ?.
Formalnie są to ciągi cyfr. Ale równie dobrze identyfikatorami mogą być ciągi cyfr i liter tak
jak np. numery rejestracyjne samochodów, jachtów, statków albo identyfikatory
krótkofalowców.
Ale jest jeszcze jedna cecha, która jest wspólna dla tych numerów. Występuje w nich cyfra
kontrolna zwykle na końcu numeru.
Trochę historii
W systemach narażonych na błędy stosuje się pewien sposób nadmiarowego
zapisu danych tak aby ewentualne błędy mogły być zauważone. W zapisach na
taśmach perforowanych (czy ktoś jeszcze pamięta, że w Polsce produkowano
prawdziwe komputery ODRA ?) każdy znak ASCII był kodowany w siedmiu
bitach. Bit=1 to była dziurka, bit=0 to był brak dziurki w odpowiedniej pozycji.
W ósmym bicie, tzw. bicie parzystości kodowano czy w siedmiu bitach była
parzysta czy nieparzysta liczba dziurek.
Jeśli była nieparzysta to na ósmej pozycji taśma była dziurkowana, w
przeciwnym przypadku na ósmej pozycji nie było dziurki.
Krótka analiza powyższego zdania prowadzi do wniosku, że gdy sie wzięło pod
uwagę wszystkie bity-dziurki to była ich zawsze parzysta liczba. Wbudowanie
odpowiedniej elektroniki do czytnika taśmy, która by sprawdzała parzystość
nie była trudna. Jeśli do taśmy przyczepił się jakiś paproszek i podczas
czytania zatkał jedną z dziurek to czytnik łatwo to wykrywał. W ten sposób do
komputera nie przedostawały się 'brudne' dane :-).
Na ilustracji obok widać taśmę perforowaną z fragmentem programu w języku BASIC-EXT na
komputer MERA400. Wyperforowane znaki to:
'LF 100 REM REPLIKA ALGOLOWEGO PROG. 02/04/80 SALFOR'.
Widać jeszcze rządek mniejszych dziurek; jest to tzw. ścieżka prowadząca, która dla czytnika
mechanicznego spełniała rolę perforacji jak na taśmie filmowej, natomiast dla czytnika
optycznego pełniła rolę synchronizatora i wskaźnika braku uszkodzeń taśmy.
Według podobnej zasady działają pamięci RAM z tzw. bitem parzystości.
Niestety ten dodatkowy bit kosztuje i tandetniejsze komputery go nie stosują.
Nie będziemy (bo się nie znamy :) tu omawiać kodowania nadmiarowego,
które umożliwia odtworzenie brakujących bitów - ta metoda jest stosowanna na
przykład w zapisie płyt CD i na dyskach twardych.
Cyfra kontrolna w numerach ewidencyjnych
Przy 'ręcznym' wprowadzaniu danych często popełnia się błędy np. zamiany
kolejności cyfr lub błędnego rozpoznania niewyraźnie napisanej cyfry w formularzu.
Aby częściowo zapobiec tym błędom, a właściwie aby nie przepuścić takich błędów
Strona 9 z 11
i nie wprowadzić błędnegu numeru do komputera stosuje się właśnie cyfrę
kontrolną.
Jak obliczyć cyfrę kontrolną?
Nasuwa się tu prosty algorytm:
- sumujemy wszystkie cyfry z całego numeru,
- jako cyfrę kontrolną bierzemy ostatnią cyfrę z tej sumy.
Algorytm jest bardzo prosty, ale nie bierze pod uwagę, że przy tzw. czeskim błędzie
(zamiana kolejności cyfr lub liter przy szybkim wprowadzaniu danych z klawiatury)
suma cyfr wyjdzie taka sama. A więc taki algorytm by nie wykrył czeskich błędów.
Dlatego wprowadzono modyfikację i nie sumuje się cyfr ale iloczyny cyfr
i współczynników wagowych. Ażeby algorytm wykrywał czeskie błędy
współczynniki wagowe dla sąsiednich cyfr powinny sie różnić i żaden współczynnik
nie może być zerem.
Patrz Dobór współczynników wagowych.
Ostatnią cyfrę sumy znajduje się przez dzielenie modulo 10. Ostatnia cyfra sumy
może być cyfrą kontrolną, ale często jako cyfrę kontrolną bierze się dopełnienie do
dziesięciu - czyli w uproszczeniu różnicę (10 - ostatnia cyfra sumy). Wzięcie
dopełnienia do 10 w rzeczywistości upraszcza weryfikację poprawności numeru.
Jak to możliwe? Ano tak, że przy weryfikacji nie oblicza się cyfry kontrolnej, ale do
obliczenia sumy iloczynów bierze się także cyfrę kontrolną weryfikowanego numeru
z wagą 1 i sprawdza ostatnią cyfrę sumy. Jeśli ostatnia cyfra sumy wynosi 0 to
numer jest zweryfikowany jako poprawny.
Jak sprawdzić cyfrę kontrolną?
Podkreślmy więc, że do weryfikacji poprawności numeru 'zabezpieczonego' cyfrą
kontrolną nie musimy jej wcale obliczać! Obliczenie jest tylko potrzebne do
generowania cyfry kontrolnej gdy mamy jakiś numer (ciąg cyfr) i chcemy mu
'dokleić' cyfrę kontrolną.
ciąg dalszy
•
•
•
•
•
•
•
•
•
•
•
•
•
Kody kontrolne
Numer PESEL
Numery NIP i REGON
Numery ISBN, ISMN, ISSN, EAN13, EAN8
IACS - numery kolczyków, numer identyfikacyjny gospodarstwa
Numery banków, kont i kart kredytowych
Numery recept (Dz. U. Nr 85, poz. 785)
Numery Prawa Wykonywania Zawodu lekarza
Paszporty, dowody ...
Podsumowanie i programy
Kody terytorialne GUS
Tablice rejestracyjne pojazdów
Strona 10 z 11
Słowniczek pojęć:
Modulo
jest to reszta z dzielenia. Przykład 13 mod 6 = 1
PESEL
jedenasto cyfrowy identyfikator
(Powszechny Elektroniczny System Ewidencji Ludności)
NIP
dziesięcio cyfrowy identyfikator podatkowy
(Numer Identyfikacji Podatkowej)
REGON
dziewięcio cyfrowy identyfikator statystyczny
(Rejestr Gospodarki Narodowej)
Nr konta bankowego pierwsze osiem cyfr konta bankowego oznacza
bank w którym jest założone owo konto.
ISBN
Międzynarodowy Znormalizowany Numer Książki
International Standard Book Number
ISSN
International Standard Serial Number
ISMN
International Standard Music Number
Międzynarodowy Znormalizowany Numer Druku Muzycznego,
Zaczyna się literą M, po której następuje 9 cyfr
ISRN
International Standard Technical Report Number
IACS
The EU Integrated Administration and Control System
Zintegrowany System Zarządzania i Kontroli
Strona 11 z 11

Podobne dokumenty