MS STUDIO grupa Największa baza logotypów różnych firm Wybierz sobie jakiś fajny prezent...

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

taśma perforowana

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:

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.

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. pomnożyć kolejne cyfry przez odpowiednie wagi
  2. jeśli wynik mnożenia jest większy od 10 należy od otrzymanej liczby odjąć 9
  3. wyniki mnożenia po wykonaniu korekty (2) należy zsumować
  4. sumę należy podzielić modulo przez 10
  5. 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. przemnożyć kolejne cyfry przez odpowiednie wagi
  2. zsumować wyniki mnożenia
  3. podzielić modulo przez 10
  4. otrzymany wynik jest sumą kontrolną

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  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. 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. pomnożyć kolejne cyfry przez odpowiednie wagi
  2. następnie sumujemy wyniki mnożenia
  3. wynik sumowania dzielimy modulo przez 11
  4. 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:

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. następnie sumujemy otrzymane wyniki
  3. dzielimy modulo przez 10
  4. otrzymany wynik odejmujemy od 10
  5. wynik odejmowania jest cyfrą kontrolną

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. pomnożyć kolejne cyfry przez odpowiadające im wagi
  2. zsumować wyniki mnożenia
  3. wynik sumowania podzielić modulo przez 11
  4. 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
  2. sumę należy podzielić modulo przez 11
  3. od 11 należy odjąć wynik operacji modulo
  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

ISBN:     *  8    3    8    5    7    8    4    2    5

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. kolejne 7 cyfr numeru mnożymy przez wagi
  2. które wynoszą kolejno 8, 7, 6, 5, 4, 3, 2
  3. sumę dzielimy Modulo 11
  4. wynik odejmujemy od 11

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,
  2. obliczamy sumę iloczynów cyfr przez ich wagi
  3. wagi wynoszą kolejno 3,1,3,1,3,1,3,1,3
  4. sumę dzielimy Modulo 10
  5. 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. zsumować wartości cyfr na miejscach parzystych,
  2. pomnożyć wynik pozycji 1. przez liczbę 3,
  3. zsumować wartości cyfr na miejscach nieparzystych, zaczynając od miejsca trzeciego,
  4. zsumować wyniki pozycji 2. i 3.,
  5. 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. obliczamy sumę iloczynów cyfr przez ich wagi,
  2. wagi wynoszą kolejno 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3
  3. sumę dzielimy Modulo 10,
  4. 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

EAN13:    * 5    9   0   1   2   3   4   1   2   3   4    5

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

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


[ POCZĄTEK ] |  [ MENU ] |  [ KONIEC ]


Rozbierz laleczkę. Lalki dla dorosłych i dla dzieci

Jeżeli spodobały ci się nasze strony możesz je Dodać do Ulubionych lub ustawić tą stronę jako swoją Stronę główną. Możesz też wysłać swojemu znajomemu lub znajomej LINK do naszej strony.

Strona główna     Dodaj do ulubionych Dodaj do ulubionych     Ustaw jako stronę główną Ustaw jako stronę główną     Wyślij link znajomemu/znajomej

Z TEJ STRONY SKORZYSTAŁO JUŻ: OSÓB