Algorytmy: Liczby kontrolne
Weryfikacja numeru PESEL
Numer PESEL jest to 11-cyfrowy, stały symbol numeryczny, jednoznacznie identyfikujący określoną osobę fizyczną.
Zbudowany jest z następujących elementów:
- cyfry [1-6] - data urodzenia w postaci: rrmmdd
- cyfry [7-9] - liczba porządkowej - cyfra [10] - płeć (cyfry parzyste oznaczają płeć żeńską, nieparzyste) - męską) - cyfra [11] - cyfra kontrolna Dla odróżnienia poszczególnych stuleci przyjęto następującą metodę kodowania:
- dla lat 1900 do 1999 - miesiąc zapisywany jest w sposób naturalny
- dla lat 1800-1899-80: miesiąc = miesiąc + 80 - dla lat 2000-2099-20: miesiąc = miesiąc + 20 - dla lat 2100-2199-40: miesiąc = miesiąc + 40 - dla lat 2200-2299-60: miesiąc = miesiąc + 60 Algorytm weryfikacji numeru PESEL jest następujący:
Weryfikacja identyfikatora 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ą. Algorytm weryfikacji numeru NIP jest następujący:
Weryfikacja identyfikatora 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ę z siedmiu lub dziewięciu cyfr.
Ostatnia cyfra jest cyfrą kontrolną.
Algorytm weryfikacji numeru REGON jest następujący:
Weryfikacja numeru banku
Numery banku w Polsce składają sie z 8 cyfr, z których ostatnia jest cyfrą kontrolną.
Algorytm weryfikacji numeru banku jest następujący:
Weryfikacja numeru rachunku bankowego IBAN
Nowe oznakowania rachunków bankowych jest już prawie zgodne z systemem IBAN: 2 początkowe cyfry 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:
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:
Natomiast wyliczanie cyfr kontrolnych numeru konta przebiega według następującego algorytmu:
Uwaga: języki programowania nie wykonują działąń na tak dużych liczbach całkowitych. W trakcie obliczeń należy podzielić długi ciąg cyfr na mniejsze porcje i na nich zrobić obliczenia. Liczba cyfr w podzielonych liczbach zależy od typu zmiennej całkowitej jaki wybierzemy do reprezentacji tych liczb. Np.: 123456789012 dzielimy na dwie liczby: 123456 i 789012 123456 MOD 97 = 72 resztę z dzielenia dopisujemy na początku drugiego fragmentu liczby: 72789012 MOD 97 = 18 to jest właśnie wynik dzielenia całkowitego liczby 123456789012 przez 97. Dzielenie długich liczb całkowitych można także wykonać używając procedury rekurencyjnej lub iteracyjnej. Przy opracowaniu algorytmów korzystałem m. in. z materiałów na stronie https://romek.info/ut/kody.html
|