Suma lub cyfra kontrolna - cd.
Dla numeru oddziału banku
7 1 3 9 7 1 3 -> wagi
* 1 1 4 0 1 0 1 -> nr konta bez cyfry kontr.
-------------------------
suma= (7*1+1*1+3*4+9*0+7*1+1*0+3*1)=
= ( 7+ 1+ 12+ 0+ 7+ 0+ 3)= 30
30 mod 10 = 0 ----> cyfra kontrolna
Do weryfikacji cyfry kontrolnej wagi wynoszą kolejno 3,9,7,1,3,9,7,1.
3 9 7 1 3 9 7 1 -> wagi
* 1 1 6 0 2 2 0 2 -> nr konta z cyfrą kontr.
-------------------------
suma= (3*1+9*1+7*6+1*0+3*2+9*2+7*0+1*2)=
= ( 3+ 9+ 42+ 0+ 6+ 18+ 0+ 2)= 80
ponieważ ostatnia cyfra sumy iloczynów równa się 0 to numer jest poprawny.
Dla numeru rachunku bankowego NRB - IBAN 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. Weryfikacja składa się z następujących kroków: Wyliczanie cyfr kontrolnych Przykład krok wstępny: BE62 5100 0754 7061 staje się BE62510007547061 krok 1 BE62510007547061 staje się 510007547061BE62 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 (przepraszam za uproszczenie ;). 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 Dla dłuższego ciągu znaków dzielimy na większą ilość porcji:
111023202 MOD 97 = 9
990043519 MOD 97 = 21
215001213 MOD 97 = 34
34145 MOD 97 = 1
Istnieje także metoda wielomianowa posługująca się wstępnie obliczonymi
współczynnikami wagowymi zgodnie ze wzorem i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 W[i] 1 10 3 30 9 90 27 76 81 34 49 5 50 15 53 i 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 W[i] 45 62 38 89 17 73 51 25 56 75 71 31 19 93 57 Jedyną zaletą metody wielomianowej jest mniejsza liczba dzieleń Dzielenie długich liczb całkowitych można także zrobić używając procedury rekurencyjnej. lub iteracyjnej. Program js-pesel napisany w javaskrypcie weryfikuje numer konta bankowego według tego algorytmu.
Dla numeru karty kredytowej
2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 -> wagi
* 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 2 -> nr karty
---------------------------------
2*1 1*2 2*3 1*4 2*5 1*6 2*7 1*8 2*9 1*0 2*1 1*2 2*3 1*4 2*5 1*2
2 2 6 4 10 6 14 8 18 0 2 2 6 4 10 2
2 + 2 + 6 + 4+1+0 + 6+1+4 + 8+1+8 + 0 + 2 + 2 + 6 + 4+1+0 + 2=60
60 mod 10 = 0 ----> cyfra kontrolna prawidłowa
Indywidualne cechy kart z różnych banków podano w tabeli poniżej:
Inne szczegóły można znaleźć w Internecie:
ciąg dalszy
|
|
Licznik = (od 2 stycznia 2001) |