Posts Tagged ‘indect’

Tworzenie globalnej ujednoliconej struktury administracyjnej trwa nieustanie od czasów epoki EWG.

Od kilku lat przestarzały system B.E.A.S.T został zastąpiony wielo-platformowym system INDECT. Warto zwrócić uwagę, że Polski pesel (1970r) powstał w czasie działania struktury Bestii…

Oto dowody na podstawie stron rządowych , które oficjalnie potwierdzają integrację Polskiego systemu administracyjnego z systemem globalnym (NWO).

Oto Nowy Porządek Świata. Dokumenty, liczby, statystyka, znamiona bestii.

http://www.eioba.pl/a/3398/indect-totalna-inwigilacja-faktem-polska-krajem-pilotazowym

http://www.eioba.pl/a/3529/niewolniku-daj-sie-spisac-indect-czeka

http://www.eioba.pl/a/33ef/plid-nowy-dowod-osobisty-nie-do-konca-legalny-oficjalnie

Dane paszportu i dowodu według normy ISO/IEC 7501-1:1997

Trochę historii

Norma ISO/IEC 7501-1:1997 została zaakceptowana i jest stosowana przez wiele krajów a została wcześniej opracowana przez International Civil Aviation Organization, ICAO opracowała standardy dla dokumentów podróży czytanych maszynowo (Machine Readable Travel Documents – MRTD), w tym paszportów i wiz. 

Taki dokument poprzez umieszczenie w dolnej części strony z danymi posiadacza strefy MRZ (Machine Readable Zone) zawierającej dwuliniowy napis krojem OCR-B umożliwia odczytanie danych posiadacza przy użyciu specjalnego skanera i przez to wydatnie skraca czas odczytu danych w paszporcie jednocześnie eliminując ryzyko błędów wynikłych z ręcznego przepisywania danych, a co za tym idzie – znacznie usprawniajšc odprawę pasażerów na lotniskach.

Standardy MRTD są zapisane na ICAO Document 9303. Part 1 Machine Readable Passports (MRPs) – paszport do odczytu maszynowego. Te standardy zostały zaakceptowane przez International Standards Organization jako ISO/IEC 7501-1:1997ISO/IEC 7501-2:1997, i ISO/IEC 7501-03:1997.

Mimo, że można znaleźć normę ISO na stronie ISO to żeby ją mieć trzeba zapłacić powyżej 20 euro (34 franków). Jak się dłużej poszuka to można ściągnąć pdf z tą normą za darmo i otrzymuje się pojedynczą kartkę, na której napisano mniej więcej tyle: „Patrz dokument ICAO 9303”.
Dokument ICAO 9303 zawiera więcej informacji o historii tej normy. Też trzeba za niego zapłacić –$62. Wersja 3 ma ok. 30 stron, a wersja 5 o 100 stron więcej – ciekawe co tam jest – chyba specyfikacja paszportów biometrycznych.

Dokument MRTD ma na dole obszar czytania maszynowego (Machine Readable Zone – MRZ). Ten obszar to kilka linijek tekstu zapisanego czcionką OCR-B, rozmiar 1 co odpowiada wielkości około 14 punktów. Szczegóły tej czcionki są na stronie ISO Standard 1073-2:1976. Położenie MRZ na stronie dokumentu, rodzaj papieru itp szczegóły są w dokumencie ICAO 9303 i ISO 1831:1980.

Forma pola przeznaczonego do odczytu maszynowego:

  • format ID1 (86 x 54 mm): trzy wiersze po 30 znaków umieszczone na odwrocie dokumentu. W Polsce na dowodzie osobistym
  • format ID2 (105 x 74 mm): dwa wiersze po 36 znaków umieszczone na dole strony personalizacyjnej lub wizy.
  • format ID3 (125 x 88 mm): dwa wiersze po 44 znaki umieszczone na dole strony personalizacyjnej paszportu.

Kodowanie danych w paszportach

Polski paszport

Obecnie obowiązujcy druk paszportu został wprowadzony do użytku 1 czerwca 2001 roku.
Dokument ten spełnia wymogi normy ICAO 9303.
Paszport ma postać książeczki o wymiarach 88 x 125 mm, o zaokrąglonych narożnikach. Składa się z 32 stron wewnętrznych, tzw. wizowych, oraz dodatkowej kartki, tzw. personalizacyjnej. Kartki paszportu są zszyte dwukolorową nicią introligatorską, aktywną w świetle UV. Elementem łączącym trwale kartki z okładką jest wyklejka. Okładka paszportu w kolorze bordowym ma elementy tłoczone złotą folią – w centralnej części godło Polski, powyżej napis RZECZPOSPOLITA POLSKA, poniżej napis PASZPORT.

Od 1 stycznia 2006 wprowadzono nowy wzór paszportu, z zaznaczeniem członkostwa Polski w Unii Europejskiej. Od dnia 28 sierpnia 2006 wydawane są paszporty zawierające dane biometryczne zapisane w warstwie elektronicznej. Paszporty te oznaczone są dodatkowym symbolem. symbolNumery paszportów składają się z dwóch liter i siedmiu cyfr. W paszportach wydawanych po 2001 rozpoczęto serię AA, w której jedna z cyfr jest cyfrą kontrolną. Od 28 czerwca 2009 zaczęto wydawać biometryczne paszporty serii EA z odciskami palców zapisanymi w chipie RFID wtopionym w okładce paszportu. Antenka podłączona do chipu biometrycznego jest zatopiona w tylnej części okładki. paszport

Urzędniczka przy wydawaniu nowego paszportu unieważnia stary przez przedziurkowanie wszystkich kartek i okładki oraz przecięcie tylnej okładki od dołu do połowy wysokości.

Zabezpieczenia paszportu i dowodów osobistych są opisane na stronach Polskiej Wytwórni Papierów Wartościowych.

Obszar MRZ w paszportach

example of Czech passport strona personalizacji polskiego paszportu

W pasku do odczytu maszynowego są dwie linie. Każda linia ma długość 44 znaków. Nie ma w nich pustych miejsc (spacji); tam gdzie spacja jest potrzebna używa się znaku wypełniającego < (znak mniejszości).

przykład – dane wymyślone
P<POLCURUS<BACHLEDA<<ANNA<MARIA<<<<<<<<<<<<<
AB12345671POL8001232F1201239<<<<<<<<<<<<<<02

Oto pola w obszarze MRZ:

Ptiiinnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
#########CbbbYYMMDDCsyymmddCppppppppppppppCX
Uwagi ogólne

Wszystkie pola są dopełniane znakiem mniejszości (<) do żądanej długości. W MRZ nie stosuje się spacji. Dopuszczalne są jedynie litery od A do Z, cyfry od 0 do 9, i znak wypełnienia <. Niektóre znaki diakrytyczne – takie jak umlauty – są zamieniane dwuznaki np.
(Ä = AE) (Æ = AE) (Ö = OE) (Ü = UE) (ß = SS)

P – paszport

Pierwsza litera „P”, oznacza paszport.
„I” oznacza dowód osobisty lub jego odpowiednik czyli ID card,
„IK” oznacza kartę stałego pobytu,
a „DR” w Polsce oznacza dowód rejestracyjny samochodu.

t – typ paszportu

Drugi znak może być przypisany przez kraj wydający paszport do rozróżnienia typów paszportów – jeśli nie określono to stosuje się znak <.
W Polsce wydaje się paszporty zwykłe, dyplomatyczne, służbowe MSZ i tymczasowe.

kod kod państwa rodzaj dokumentu
P< POL paszport zwykły (PO)
PP POL dokument podróży dla cudzoziemca (PP) seria PP
PC POL dokument podróży dla cudzoziemca (PC) seria GP
PD POL paszport dyplomatyczny (seria DD)
PT POL paszport tymczasowy (seria PZ)
PS POL paszport służbowy MSZ (seria CC)
I< POL dowód osobisty zwykły (ID)
DR POL dowód rejestracyjny

W zwykłym polskim paszporcie pole to nie jest użyte.

iii – państwo lub organizacja wydająca

Trzyznakowy skrót nazwy państwa wydającego paszport. Patrz tablica kodów.

W przykładzie powyżej kod państwa jest POL.

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn – Nazwisko i imię

Pole to zawiera nazwisko i imiona właściciela paszportu zapisane w postaci
NAZWISKO<<PIERWSZE<IMIE<KOLEJNE<IMIONA<„.
Nazwisko i imiona są napisane wielkimi literami. Spacje lub znaki przestankowe, takie jak myślniki, są zamienione na znak <. Na początku jest nazwisko oddzielone dwoma znakami << od imion, które są oddzielone od siebie pojedynczym znakiem <. Znak < dopełnia pole do długości 39 znaków.
Uwaga: w poprzedniej serii paszportów (BM) na pierwsze imię przeznaczono 12 miejsc; więc między pierwszym a drugim imieniem było kilka znaków <

Dodatki do nazwiska takie jak Jr, Sr, II, III itd są kodowane jako część nazwiska bez znaków przestankowych.

Jeśli nazwisko jest zbyt długie to zapisuje się najważniejsze człony nazwiska. Jeśli to konieczne to imiona mogą być skracane.

W przykładzie imię Anny jest Gąsienica Curuś, pierwsze i drugie imię to Anna i Maria. Imię i nazwisko są zapisane jako

GASIENICA<CURUS<<ANNA<MARIA<<<<<<<<<<<<

lub w serii BM

GASIENICA<CURUS<<ANNA<<<<<<<<MARIA<<<<<
######### – numer paszportu

Jest to numer paszportu jaki został nadany przez kraj wystawiający. Każdy kraj może nadawać numery według dowolnego systemu. Jeżeli numer zawiera znaki nieliterowe i niecyfrowe to są one zastępowane znakiem <.
Uwaga: W Polsce numery paszportów serii BM wydawanych od 1997 do 2001r. nie posiadały cyfry kontrolnej. Nowe paszporty serii zaczynającej się od AA i 7 cyfr mają cyfrę kontrolną, która obejmuje dwie litery i 6 cyfr. Współczynniki wagowe są takie jak w numerze PESEL ale w innej kolejności.

C – cyfra kontrolna

Cyfry kontrolne dotyczą poprzedniego pola. Tak więc, pierwsza cyfra kontrolna dotyczy numeru paszportu, następna dotyczy daty urodzenia, następna daty ważności i następna numeru osobistego (odpowiednika PESEL).
Cyfra kontrolna obliczona jest według algorytmu.

bbb – narodowość – obywatelstwo

Kod państwa. Kod jest zwykle trzyliterowy (POL dla Polski, USA dla Stanów Zjednoczonych, RUS dla Rosji, ale pojedyncze „D” dla Niemiec). Kody państw są zawarte w tabeli kodów.

YYMMDD – data urodzenia

Data urodzenia właściciela paszportu w formacie YYMMDD. Rok jest obcięty do dwóch cyfr. Jednocyfrowe numery dni miesięcy lub dni są uzupełniane cyfrą 0.

W przykładzie Anna urodziła się 2 sierpnia 2001. Co zapisane jest jako „010802”.

s – płeć

Płeć właściciela paszportu, M dla mężczyzn, F dla kobiet, a < dla płci nieokreślonej :).

Anna Maria jest dziewczyną, więc „F„.

yymmdd – data ważności paszportu

Data ważności paszportu w formaciie YYMMDD (YY – rok obcięty do dwóch cyfr. Jednocyfrowe liczby miesięcy i dni są uzupełniane cyfrą 0 by tworzyć zapis dwucyfrowy.

Paszport Marii Anny jest ważny do 23 stycznia 2012 roku co jest kodowane jako „120123”.

pppppppppppppp – numer osobisty (Personal Number)

To pole może być użyte dowolnie przez kraj wydający paszport.
Teoretycznie w Polsce mógłby to być numer PESEL. W starszych paszportach pole to nie było użyte, mimo że w paszporcie numer PESEL był wpisany.

Numer PESEL Anny Marii nie jest używany w polskim paszporcie więc pole wypełnione jest znakami: „<<<<<<<<<<<<<<„.

Pole jest niewypełnone więc jego cyfra kontrolna obliczana jako 0 i zapisywana jako 0.

X – końcowa cyfra kontrolna

Jest to cyfra kontrolna obejmująca w drugiej linii znaki 1 do 10, 14 do 20, i 22 do 43. Tak więc narodowość i płeć nie są uwzględniane w tej cyfrze.
Cyfra kontrolna jest obliczana zgodnie z poniższym algorytmem.

Obliczenia cyfry kontrolnej

Po pierwsze rozbijamy dane na szereg liter i cyfr.

Następnie zamieniamy litery na liczby. Kolejne litery od A do Z mają przypisane odpowienio liczby od 10 do 35. Znak < jest kodowany jako 0.

   <  A  B  C  D  E  F  G  H  I  J  K  L  M  
   0 10 11 12 13 14 15 16 17 18 19 20 21 22 

      N  O  P  Q  R  S  T  U  V  W  X  Y  Z
     23 24 25 26 27 28 29 30 31 32 33 34 35

Ze względu na późniejsze obliczenia, równie dobrze można przypisać literom A do Z liczby od 0 do 25 – nie będzie to miało wpływu na wynik obliczeń cyfry kontrolnej.

Mnożymy każdą liczbę przez odpowiednią wagę. Pierwsza od lewej liczba jest mnożona przez 7, następna przez 3, i kolejna przez 1. Kolejna znowu przez 7, 3, 1 itd.

Dodajemy wyniki i dzielimy całkowicie przez 10. Reszta z dzielenia jest cyfrą kontrolną.

W specjalnym przypadku gdy jakieś pole jest nieużywane (czyli jest wypełnione znakiem <) wtedy cyfra kontrolna danego pola może być zamieniona na znak <.

Przykład obliczenia dla numeru AB1234:

Dane:      A    B    1    2    3    4    <    <    < 
Wartości: 10   11    1    2    3    4    0    0    0 
Wagi:      7    3    1    7    3    1    7    3    1 
Iloczyny: 70   33    1   14    9    4    0    0    0 
Suma:     70 + 33 +  1 + 14 +  9 +  4 +  0 +  0 +  0 = 131 

Reszta z dzielenia  131 MOD 10 = 1.

Przykład obliczenia cyfry kontrolnej dla daty urodzenia 27 lipca 1952.

Data:      5    2    0    7    2    7
Wagi:      7    3    1    7    3    1
Iloczyny: 35    6    0   49    6    7
Suma:     35 +  6 +  0 + 49 +  6 +  7 = 103

Reszta z dzielenia  103 MOD 10 = 3

Przykład obliczenia końcowej cyfry kontrolnej
– pola narodowość i płeć pomijamy, a pozostałe dane z drugiej linii MRZ ustawiamy obok siebie włączając obliczone dla pól cyfry kontrolne.

Dane:      A  B 1 2 3 4 5 6 7 1 8 0 0 1 2 3 2 1 2 0 1 2 3 9 <<<<<<<<<<<<<<0
Wartości: 10 11 1 2 3 4 5 6 7 1 8 0 0 1 2 3 2 1 2 0 1 2 3 9 000000000000000
Wagi:      7  3 1 7 3 1 7 3 1 7 3 1 7 3 1 7 3 1 7 3 1 7 3 1 731731731731731
Iloczyny:  0  3 1 4 9 4 5 8 7 7 4 0 0 3 2 1 6 1 4 0 1 4 9 9 000000000000000
Suma:      0 +3+1+4+9+4+5+8+7+7+4+0+0+3+2+1+6+1+4+0+1+4+9+9+000000000000000

Dla skrócenia zapisu przykładu w iloczynach podajemy tylko obliczoną 
liczbę jednostek.  11*3=33 zapisujemy jako 11*3= 3

Reszta z dzielenia  92 MOD 10 = 2
Państwo – organizacja

Tabela jest używana do państwa wydającego paszport i do narodowości. Jako kod narodowości przyjmuje się kod kraju urodzenia danej osoby. Jeżeli kod jest krótszy od trzech liter to jest uzupełniana znakiem < do długości 3.

Lista kodów państw i narodowości opiera się o ISO 3166, ale nie jest w pełni z nią zgodna. Sekcja statystyki ONZ podaje listę kodów ISO-3166 alpha-3.

Patrz także:
– Paszporty w Unii Europejskiej strona po angielsku.
– Paszporty biometryczne strona po angielsku
– Nowy polski paszport w odciskami palców strona po angielsku
– Odciski palców do paszportu biometrycznego ulotka MSWIA

Paszporty – cyfra kontrolna w serii i numerze.

W numerze i serii paszportu zastosowano cyfrę kontrolną. Nietypowo cyfra kontrolna nie jest na końcu numeru, ale na początku. Seria paszportu też wchodzi do obliczenia cyfry kontrolnej w taki sam sposób jak określa to norma ISO/IEC 7501-1:1997.

Literom można przypisać liczby:

 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Przykład sprawdzenia dla paszportu EH0123456

Dane:       E    H    0   1   2   3   4   5   6
Wartości:  14   17    0   1   2   3   4   5   6
Wagi:       7    3    9   1   7   3   1   7   3
Iloczyny:  98   51    0   1  14   9   4  35  18
Sumowanie: 98 + 51 +  0 + 1 +14 + 9 + 4 +35 +18 = 230

Reszta z dzielenia  230 MOD 10 = 0

Reszta z dzielenia równa 0 (zero) świadczy o formalnej poprawności serii i numeru.

Wagami mogą być także dopełnienia powyższych wag do 10 czyli:

stare wagi:   7    3    9    1    7    3    1    7    3
dopełnienie:  3    7    1    9    3    7    9    3    7

a także stare wagi pomnożone przez 3 i dzielone modulo 10 oraz ich dopełnienia

stare wagi:   7    3    9    1    7    3    1    7    3
iloczyn x 3: 21    9   27    3   21    9    3   21    9
modulo 10:    1    9    7    3    1    9    3    1    9
dopełnienie:  9    1    3    7    9    1    7    9    1
Generowanie cyfry kontrolnej numeru paszportu

Algorytm obliczenia cyfry kontrolnej dla serii AB i numeru kolejnego 123456

Dane:        A    B    ?    1    2    3    4    5    6
Wartości:   10   11    ?    1    2    3    4    5    6
Wagi:        7    3         1    7    3    1    7    3
Iloczyny:   70   33         1   14    9    4   35   18
Sumowanie:  70 + 33 +       1 + 14  + 9  + 4 + 35 + 18 = 184

Reszta z dzielenia  184 MOD 10 = 4

Reszta z dzielenia stanowi cyfrę kontrolną i umieszczamy ją za literami serii
AB 4 123456

Uwaga: miejsce położenia cyfry kontrolnej nie jest 100% pewne. Mogę to ustalić jeżeli będę miał kilka serii i numerów paszportów wydanych tego samego dnia. Jeżeli masz takie dane podaj je na Gadu-Gadu GaduGadu3096824.

Kodowanie danych w Dowodzie Osobistym

Nowy wzór dowodu osobistego obowiązuje od 1 stycznia 2001 roku. Dokument ma postać wielowarstwowej karty poliwęglanowej o wymiarach 86 x 54 mm, zawierającej podstawowe informacje o jej posiadaczu, dacie wydania, organie wydającym i terminie ważności. Informacje zapisane są zarówno w sposób jawny, jak i zakodowany.

dwie strony Dowodu Osobistego RP - wzór

Uwaga: dane w tej próbce dowodu osobistego są świadomie podane błędne.
Na przykład cyfra kontrolna numeru PESEL jest błędna.
Miejsce zamieszkania Łeba, Al. Niepodległości 146.
Ale w Łebie nie ma takiej ulicy. 🙂
Seria numeru dowodu ABA nie pasuje do daty wydania 22.08.2002
Seria ABA pasuje bardziej do daty 22.03.2002
Zdjęcie jest niezgodne z instrukcją.

Obszar MRZ w Dowodzie Osobistym

W pasku do odczytu maszynowego są trzy linie. Każda linia ma długość 30 znaków. Nie ma w nich pustych miejsc (spacji); tam gdzie spacja jest potrzebna używa się znaku wypełniającego < (znak mniejszości).

przykład – dane wymyślone
I<POLABA1234568<<<<<<<<<<<<<<<
8001232F1201239POL<<<<<<<<<<<4
CURUS<BACHLEDA<<ANNA<MARIA<<<<

Oto pola w obszarze MRZ dla Dowodu Osobistego:

Itiii#########C???????????????
YYMMDDCsyymmddCbbbpppppppppppX
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

Uwaga: nie wiem na co zarezerwowano pola oznaczone ??????????????? oraz ppppppppppp. Teoretycznie ppppppppppp zawiera miejsce na „Personal Number”, ale ma tylko 11 miejsc i do niego nie możnaby stosować cyfry kontrolnej tak jak dla innych pól numerycznych. Z drugiej strony PESEL sam ma już cyfrę kontrolną i nie jest konieczna kolejna cyfra kontrolna.

I – Dowód Osobisty (ID card)

Pierwsza litera „P”, oznacza paszport.
„I” oznacza dowód osobisty lub jego odpowiednik czyli ID card,
a „DR” w Polsce oznacza dowód rejestracyjny samochodu.

kod kod państwa rodzaj dokumentu
I< POL dowód osobisty zwykły (ID)
IO POL polski dowód tożsamości cudzoziemca
IZ POL tymczasowe zaświadczenie tożsamości cudzoziemca
IS POL karta pobytu stałego (stare)
IK POL karta pobytu
IE POL karta pobytu obywatela UE
IM POL karta małego ruchu granicznego
KP POL karta Polaka
DR POL dowód rejestracyjny
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn – Nazwisko i imię

Pole to zawiera nazwisko i imiona właściciela dowodu zapisane w postaci
NAZWISKO<<PIERWSZE<IMIE<KOLEJNE<IMIONA<„.
Nazwisko i imiona są napisane wielkimi literami. Spacje lub znaki przestankowe takie jak myślniki są zamienione na znak <. Na początku jest nazwisko oddzielone dwoma znakami << od imion, które są oddzielone od siebie pojedynczym znakiem <. Znak < dopełnia pole do długości 30 znaków.

W przykładzie nazwisko Anny jest Gąsienica Curuś, pierwsze i drugie imię to Anna i Maria.

Przykład obliczenia cyfry kontrolnej pola alfanumerycznego
Dane:      A    B    A   1   2   3   4   5   6 
Wartości: 10   11   10   1   2   3   4   5   6 
Wagi:      7    3    1   7   3   1   7   3   1 
Iloczyny: 70   33   10   7   6   3  28  15   6 
Suma:     70 + 33 + 10 + 7 + 6 + 3 +28 +15 + 6 = 178

Reszta z dzielenia  178 MOD 10 = 8
Przykład obliczenia końcowej cyfry kontrolnej

Pola narodowość i płeć pomijamy, a pozostałe dane z pierwszej i drugiej linii MRZ ustawiamy obok siebie uwzględniając cyfry kontrolne obliczone dla pól.

Dane:      A  B  A 1 2 3 4 5 6 8 8 0 0 1 2 3 2 1 2 0 1 2 3 9
Wartości: 10 11 10 1 2 3 4 5 6 8 8 0 0 1 2 3 2 1 2 0 1 2 3 9 
Wagi:      7  3  1 7 3 1 7 3 1 7 3 1 7 3 1 7 3 1 7 3 1 7 3 1 
Iloczyny:  0  3  0 7 6 3 8 5 6 6 4 0 0 3 2 1 6 1 4 0 1 4 9 9
Suma:      0 +3 +0+7+6+3+8+5+6+6+4+0+0+3+2+1+6+1+4+0+1+4+9+9 = 88

Dla skrócenia zapisu przykładu w iloczynach podajemy tylko obliczoną 
liczbę jednostek.  11*3=33 zapisujemy jako (11*3) MOD 10 = 3

Reszta z dzielenia  88 MOD 10 = 8

Dowód Osobisty – cyfra kontrolna w serii i numerze.

Jako ciekawostkę można podać, że w samym numerze i serii dowodu osobistego zastosowano cyfrę kontrolną. Dla zmyłki cyfra kontrolna nie jest na końcu numeru, ale na początku. Seria dowodu też wchodzi do obliczenia cyfry kontrolnej w taki sam sposób jak określa to norma ISO/IEC 7501-1:1997.

Literom można przypisać liczby:

 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Przykład sprawdzenia dla dowodu osobistego ABS123456

Dane:       A    B    S   1   2   3   4   5   6
Wartości:  10   11   28   1   2   3   4   5   6
Wagi:       7    3    1   9   7   3   1   7   3
Iloczyny:  70   33   28   9  14   9   4  35  18
Sumowanie: 70 + 33 + 28   9 +14 + 9 + 4 +35 +18 = 220

Reszta z dzielenia  220 MOD 10 = 0

Reszta z dzielenia równa 0 (zero) świadczy o poprawności serii i numeru.

Wagami mogą być także dopełnienia powyższych wag do 10 czyli:

stare wagi:   7    3    1    9    7    3    1    7    3
dopełnienie:  3    7    9    1    3    7    9    3    7

a także stare wagi pomnożone przez 3 i dzielone modulo 10 oraz ich dopełnienia

stare wagi:   7    3    1    9    7    3    1    7    3
iloczyn x 3: 21    9    3   27   21    9    3   21    9
modulo 10:    1    9    3    7    1    9    3    1    9
dopełnienie:  9    1    7    3    9    1    7    9    1
Generowanie cyfry kontrolnej numeru dowodu osobistego

Algorytm obliczenia cyfry kontrolnej dla serii ABS i numeru kolejnego 23456

Dane:        A    B    S       2    3    4    5    6
Wartości:   10   11   28       2    3    4    5    6
Wagi:        7    3    1       7    3    1    7    3
Iloczyny:   70   33   28      14    9    4   35   18
Sumowanie:  70 + 33 + 28   +  14  + 9  + 4 + 35 + 18 = 211

Reszta z dzielenia  211 MOD 10 = 1

Reszta z dzielenia stanowi cyfrę kontrolną i umieszczamy ją za literami serii
ABS 1 23456

Dowód Osobisty – weryfikacja serii i daty wydania.

Podczas weryfikacji poprawności danych dowodu osobistego oprócz cyfry kontrolnej można zweryfikować także serię i datę wydania.
Data wydania to data personalizacji czyli nanoszenia danych konkretnej osoby w Centrum Personalizacji Dokumentów MSWiA na formularzu wyprodukowanym w PWPW.
W literach serii nie używa się liter ‚O’ i ‚Q’. Jeżeli więc ktoś poda takie litery w serii to z pewnością dane są błędne.
Biorąc pod uwagę liczbę wydawanych dowodów i kolejność nadawania liter serii – AAA, AAB, AAC, … AKL, AKM, AKN, .. itd. dowód o serii ABC nie był z pewnością wydany w roku 2007. Podobnie nie należy się spodziewać dowodu serii BAA przed rokiem 2015. Odpowiednie dane poniżej.

Liczba wydawanych Dowodów Osobistych w latach 2001-2010
Liczba wydawanych Dowodów Osobistych w latach 2001-2010.
Uwaga: możesz wpisać swoje dane w formularzu i umieścić je na tym wykresie.

 

Dowód rejestracyjny pojazdu

rozdział w opracowaniu

Jest dokumentem stwierdzającym dopuszczenie do ruchu pojazdu, zawierającym jego dane techniczne oraz dane personalne jego właściciela.

Wydawany od 1 października 2004 roku dowód rejestracyjny odpowiada wymogom niedawno znowelizowanej dyrektywy Rady UE 1999/37/WE z 29 kwietnia 1999 roku w sprawie dokumentów rejestracyjnych pojazdów.

Nowy dowód jest drukowany i centralnie personalizowany na terenie Wytwórni Papierów Wartościowych, co zapewnia maksymalny poziom bezpieczeństwa dokumentu. Pozwala na wyeliminowanie kradzieży blankietów z urzędu i ich fałszowanie.

Wzór dowodu rejestracyjnego pojazdu
Uwaga: zapis MRZ w lewej części dowodu rejestracyjnego nie odpowiada w tym przykładzie treści innych rubryk.
Także same dane są niezgodne ze sobą.
Numer rejestracyjny GD nie mógł być wydany w Warszawie.
Data wydania dowodu nie pasuje do numeru dowodu DR/AAA 0000000.
Cyfry kontrolne są błędnie obliczone.

MRZ

Oto pola w obszarze MRZ:

        DRPOLiiiiddddddddddvvvvvvvvvvvvvvvvvCX
        ########CppppppppppppppnnnniiiiiiiiiiY


DR – kod dla Dowodu Rejestracyjnego

POL – trzyznakowy skrót nazwy państwa wydającego dokument. Patrz tablica kodów.

iiii – czteroznakowy kod GUS jednostki wydającej dokument. Dwie pierwsze cyfry oznaczają numer województwa, a pozostałe numer powiatu. 1061 to m.Łódź, a 2261 to m.Gdańsk.

dddddddddd – seria i numer Dowodu Rejestracyjnego. Według moich testów numer ten nie zawiera cyfry kontrolnej.

vvvvvvvvvvvvvvvvv – numer VIN (Vehicle Identification Number) 17. znakowy nr nadwozia. Numer VIN zawiera w sobie kod marki pojazdu, model, rok produkcji i inne dane, w tym numer seryjny modelu. W sieci jest VIN checker, który dekoduje te dane. Niestety baza programu jest niepełna.

C – cyfra kontrolna numeru VIN – wg. algorytmu.

X – cyfra kontrolna pierwszej linii – wg. algorytmu.

######## – numer rejestracyjny (tablice rejestracyjne)

C – cyfra kontrolna numeru rejestracyjnego – wg. algorytmu.

pppppppppppppp – numer PESEL (11 cyfr) lub REGON (9 lub 14 cyfr) właściciela pojazdu. W przypadku numeru PESEL za numerem występuje <<<

nnnniiiiiiiiii – kod ITS (z katalogu Instytutu Transportu Samochodowego).
Część nnnn oznacza kod marki pojazdu.
Starsze pojazdy wyprodukowane przed 1999r. (wprowadzono obowiązek przedstawienia przy rejestracji świadectwa homologacji) nie mają kodu ITS w Dowodzie Rejestracyjnym.

Y – cyfra kontrolna drugiej linii – wg. algorytmu.

 



Przykłady
kod marka kod marka
0002 Ferrari 0111 Honda
0003 Aston Martin 0202 Daewoo
0005 Bentley 0203 Jeep
0006 Lotus 0212 Polski Fiat
0009 Rolls-Royce 0216 BMW
0012 Lamborghini 0217 Volkswagen
0013 Maserati 0218 Ford
0102 Junak 0224 Opel
0107 SHL 0226 Renault
0108 WFM 0250 Rover
0109 WSK 0258 SEAT
0121 Sokół 0262 Mazda
0263 Mitsubishi
0264 Nissan
0399 FSO-Warszawa 0265 Toyota
1383 FSO 0267 Porsche

opis do uzupełnienia

 

Niektóre zabezpieczenia dowodów rejestracyjnych opisano na stronie PWPW.

  • Znak wodny – element zabezpieczający obserwowany w świetle przechodzącym.
  • Rysunek w świetle UV na stronie tylnej dokumentu.
  • Zabezpieczenia chemiczne ujawniające się pod wpływem działania na dokument odczynnikami chemicznymi.
  • Efekt kątowy – litery PL RP PL obserwowane przy odpowiednim kącie obserwacji

Litery w numerze rejestracyjnym pojazdów nadaje się według tabeli, zgodnie z podziałem terytorialnym.


Następne ciekawostki:

  • numery ksiąg wieczystych prowadzanych w systemie elektronicznym, tzw. Nowa Księga Wieczysta, też zawierają cyfrę kontrolną. Wagi takie jak w Dowodach Osobistych i Paszportach ale w innej kolejności. Zamienniki liter A-Z trochę zmienione w porównaniu z Paszportami.
    Patrz Weryfikacja Numeru Księgi Wieczystej
  • Numer na stemplu lekarza i dentysty też zawiera cyfrę kontrolną.
    Patrz Weryfikacja Numeru Prawa Wykonywania Zawodu Lekarza

 NIP i REGON

Dla identyfikatora NIP
wagi wynoszą kolejno 6,5,7,2,3,4,5,6,7 Modulo 11
(i nie odejmujemy już tej wartości od 10!)
Przykład dla numeru identyfikacyjnego NIP 768-000-24-66
            6 5 7 2 3 4 5 6 7   -> wagi
         *  7 6 8 0 0 0 2 4 6   -> nr NIP (bez cyfry kontr.)
        ---------------------
suma= (6*7+5*6+7*8+2*0+3*0+4*0+5*2+6*4+7*6)=
    = ( 42+ 30+ 56+  0+  0+  0+ 10+ 24+ 42)=  204

           204 mod 11 = 6 ----> cyfra kontrolna
Uwaga:
  a co zrobić gdy wynik dzielenia modulo 11 wyjdzie 10 ? 
  Jest to niemożliwe gdyż numery NIP są tak generowane aby 
  nigdy nie zaszedł przypadek, żeby (suma mod 11) wyszła 10. 
  Po prostu Urząd nadaje kolejny numer i sprawdza czy 
  (suma mod 11) wyszło 10. Jeśli tak to numer jest zwiększany 
  o 1 i obliczna jest nowa cyfra kontrolna.
Uwaga2:
  Tzw. VAT europejski dla polskich podmiotów gospodarczych
  to po prostu zwykły  NIP poprzedzony literami PL.

Zasady weryfikacji numerów NIP i podobnych w krajach europejskich zostały opisane na stronie

www.pruefziffernberechnung.de/U/USt-IdNr.

Tłumaczenie z niemieckiego na angielski wykonane dzięki
http://babelfish.altavista.com/babelfish/
Uwaga czytelnika tej strony: tłumaczenie zawiera błędy powstałe z bezmyślnego przetłumaczenia wszystkiego co się

tam znalazło na język angielski.

Przykładowo kod państwa Hiszpanii (ES) został przetłumaczony na angielski odpowiednik IT (Włochy) oraz błędy w

źródle na stronie niemieckiej
2+3+12+6+18+5+18+7+10=45 wg Niemców – powinno być chyba 81

Sprawdzenie VATu europejskiego można dokonać w Urzędzie Skarbowym lub drogą elektroniczną numery.vat@mofnet.gov.pl.

Nasz NIP stanie się VATem europejskim dopiero po zgłoszeniu w Urzędzie Skarbowym i zapisaniu w odpowiedniej bazie danych.

Sprawdzanie w tej bazie można dokonać na stronie VAT Information Exchange System (VIES).

Uwaga: Trzy pierwsze cyfry numeru NIP oznaczają prefiks przydzielony do Urzędu Skarbowego, który wystawił dany numer.

Początkowo w prefiksie występowały cyfry 1..9, a więc nie występowała cyfra 0. W prefiksie najniższe trzy pierwsze cyfry to 111,

a najwyższe to 998.
Uwaga2: W roku 2004 złamano tę zasadę i przydzielono kilkudziesięciu urzędom prefiksy, które miały jako drugą cyfrę zero –

na ten przydział załapała się słynna już Włoszczowa.

Weryfikcję numeru NIP i dekodowanie nazwy Urzędu Skarbowego wykonuje mały skrypt

Skarbczyk Skarbowca

Podmiot gospodarczy – firmę można namierzyć znając jej NIP

Uwaga: 2010 w internecie jest kilka błędnych skryptów, które błędnie weryfikują numer NIP 1234567890 jako prawidłowy.

A to jest szczególny przypadek gdy   Suma MOD 11 = 10
http://www.biznesforum.pl/sprawdz-nip-pesel-regon.php
http://dlafirmy.info.pl/sprawdz_numer_nip/ (poprawiony 16.03.2010)
http://www.spolki.biz/sprawdz_nip_i_pesel.php
podejrzewam, że korzystają z tego samego błędnego algorytmu.

Przykładowa implementacja w php

   $NIP = '';
   for($i=0;$i<strlen($dana);$i++) pozbywamy="" się="" kresek="" i="" spacji="" if="" 
(="" ($dana[$i]="">='0') && ($dana[$i]<='9') )  $NIP = $NIP . $dana[$i];
   if(strlen($NIP)==10) {
      $sum  = 0;
      for ( $i=0; $i< 9; ++$i )
         $sum += $NIP{$i} * substr('657234567', $i, 1);
      if ($sum % 11 == $NIP{9} ) return true;
   }
   return false;

Dla identyfikatora REGON
REjestr podmiotów GOspodarki Narodowej został utworzony uchwałą Rady Ministrów z dnia 17 października 1975 r. (Monitor Polski nr 35 poz. 211).
Według Rozporządzenia Rady Ministrów z dnia 27 lipca 1999 r.
(Dz. U. Nr 69, poz. 763)

Krajowy rejestr urzędowy podmiotów gospodarki narodowej, zwany dalej „rejestrem podmiotów”, obejmujący:
1) osoby prawne,
2) jednostki organizacyjne nie mające osobowości prawnej,
3) osoby fizyczne prowadzące działalność gospodarczą
oraz ich jednostki lokalne,
jest prowadzony przez Prezesa Głównego Urzędu Statystycznego w sposób zinformatyzowany i nosi skróconą nazwę REGON.

Dla identyfikatora REGON 7-mio cyfrowego
wagi wynoszą kolejno 2,3,4,5,6,7

Dla identyfikatora REGON 9-cio cyfrowego
wagi wynoszą kolejno 8,9,2,3,4,5,6,7
sumę dzielimy Modulo 11
Przykład dla numeru identyfikacyjnego REGON 590096454

       *  5 9 0 0 9 6 4 5     -> nr REGON (bez cyfry kontr.)
          8 9 2 3 4 5 6 7     -> wagi
      -------------------
suma= (8*5+9*9+2*0+3*0+4*9+5*6+6*4+7*5)=
    = ( 40+ 81+  0+  0+ 36+ 30+ 24+ 35)=  246

           246 mod 11 = 4 ----> cyfra kontrolna

Uwaga:
  warto zauważyć, że wynik dzielenia modulo 11 może wyjść 10.
  Ponieważ cyfry "10" brak (a znaku X jak w numerze ISBN się 
  tu nie stosuje) to w tym przypadku jako cyfrę kontrolną 
  należy przyjąć 0.
Uwaga2:
  Niestety na wielu stronach internetowych brak powyższej 
  uwagi w opisach weryfikacji REGONu, z czego wyniknęły 
  poważne awantury na forum dla fotomodelek i fotografów.

Uwagi Arkadiusza Domańskiego – czytelnika tej strony – na temat znaczenia cyfr w numerze REGON.

„Dawno temu, REGON był 7-cyfrowy, i numery były nadawane centralnie. Później (chyba ok. 1985-90r.) rozszerzono REGON na 9 cyfr, gdzie regonom „starym” (7-cyfrowym) po prostu dołożono na początku 2 zera, a nowe zaczęto tworzyć wg klucza:
2 cyfry wyróżnika województwa + 6 cyfr „nru seryjnego” + 1 cyfra kontrolna.
Województw było 49 i miały nadane kolejne numery nieparzyste – od 01 (warszawskie) do 97 (chyba zielonogórskie). Numer woj.łódzkiego był 47.
Tak więc numerów parzystych na 2 cyfrze (do 1999 roku) być nie mogło. Po reformie administracyjnej zmieniła się liczba województw, ale numery REGON nadawane obecnie mają ten sam przedrostek, co przed reformą 1999 roku. Tzn. WUS w Warszawie nadal nadaje numery zaczynające się od 01, w Płocku od 61, w Radomiu od 63 itd. mimo że Płock i Radom nie są teraz miastami wojewódzkimi.
NB. Obecne województwa mają numerki parzyste, od 02 do 32.
Ponadto, od 01.01.1999r identyfikator REGON może mieć 9 znaków (jak dotychczas), ale może być też uzupełniony o dodatkowych 5 cyfr – taki 14-cyfrowy numer nazywa się „identyfikatorem jednostki lokalnej”. Chodzi z grubsza o to, żeby można było rozróżnić fabrykę w Gdańsku od fabryki w Katowicach, które są własnością jednej firmy z Warszawy. Do tej pory wszystkie takie jednostki posługiwały się jednym, wspólnym regonem, a teraz pierwsze 9 cyfr jest wspólne, a różnią się na tych dodatkowych 5 cyfrach. Do tego, te dodatkowe 5 cyfr mają tylko te przykładowe dwie fabryki, a firma-matka z Warszawy ma regon starego typu: 9-cyfrowy.
Uffff… (to wszystko wynika z rozporządzenia pt „Sposób i metodologia prowadzenia i aktualizacji rejestru podmiotów gospodarki narodowej…”, Dz.U.99.69.763)
I pytanie: jaki jest algorytm wyliczania piątej cyfry kontrolnej w tym dodatkowym 5-cyfrowym członie?

Uzupełnienie powyższych informacji (maj 2007)
Prefix 00 może się pojawić na początku numeru REGON dla bardzo starych numerów gdy 7-io cyfrowy REGON rozszerzano do 9-iu cyfr.
Obecnie – teoretycznie po reformie 1999r – dla nowo nadawanych numerów dwie pierwsze cyfry oznaczają numer nowego województwa ale…
Z powodu dużo większej liczby małych firm pojemność numeryczna REGONU może się wyczerpać i co jakiś czas kolejne województwo może wystąpić o nową pulę numerów z pierwszymi dwiema cyframi np. 36, 38, 40 itd.
Z powodu bałaganiarstwa Sejmu początkowe dwie cyfry „04” przydzielono do zakonów, kościołów i związków wyznaniowych – ten numer – prefiks był dany przez GUS województwu kujawsko-pomorskiemu, któremu nadano prefiks numeru REGON 34.
Podsumowując, po dwu pierwszych cyfrach nie można się zorientować gdzie działa jakaś firma lub osoba prawna.
Jedynie można się zorientować gdzie została zarejestrowana:
prefiks  00 niewiadomo gdzie ale bardzo dawno temu 🙂
prefiksy 01, 03 … 97 numer województwa przed rokiem 1999
prefiksy 02, 04*, 06 … 34 numer nowego województwa po 1.1.1999
prefiksy 36 … 98 nie wiadomo gdzie, ale niedawno.

Numery id. REGON nie identyfikują podmiotów według podziału terytorialnego kraju. Informacja o pulach numerów jest objęta tajemnicą służbową, ponieważ taka informacja może zostać wykorzystana przez oszustów. Każda pula może zostać zmieniona w dowolnej chwili o ile zajdzie taka konieczność.

Departament Metodologii, Standardów i Rejestrów GUS
Wydział Rejestru REGON

Dokładne dane przedsiębiorstwa są zapisane w bazie GUS i na podstawie REGON lub NIP można je uzyskać przez internet.

Na stronie GUS (adres już nie działa) można było znaleźć taki opis:

„Numer identyfikacyjny podmiotów (osób prawnych, jednostek organizacyjnych nie mających osobowości prawnej, osób fizycznych prowadzących działalność gospodarczą) składa się z 9 cyfr, które nie mogą mieć ukrytego lub jawnego charakteru znaczącego, określającego pewne cechy podmiotu, przy czym osiem pierwszych cyfr stanowi liczbę porządkową, a dziewiąta – cyfrę kontrolną.
Numer identyfikacyjny jednostki lokalnej składa się z 14 cyfr, przy czym dziewięć pierwszych cyfr stanowi numer identyfikacyjny REGON osoby prawnej, jednostki organizacyjnej nie mającej osobowości prawnej lub osoby fizycznej prowadzącej działalność gospodarczą, cztery kolejne cyfry są liczbą porządkową przypisaną jednostce lokalnej, a czternasta jest cyfrą kontrolną.
Raz nadane numery, nawet w przypadku likwidacji podmiotu, nie są wykorzystywane do identyfikacji innego podmiotu.” 

Nowszy opis pod adresem:
http://www.stat.gov.pl/bip/389_117_PLK_HTML.htm

Numer identyfikacyjny jednostki lokalnej czyli tzw. REGON 14-to cyfrowy jest weryfikowany według identycznego algorytmu jak poprzednio, jednak wagi zostały zupełnie zmienione. Cyfra kontrolna na końcu obejmuje poprawność 13-tu cyfr.
Co ciekawe, z powodu czyjegoś błędu w pierwszej wersji zmieniono wagi (być może tylko jedną) i teraz na piątej pozycji waga wynosi 0 (tak zero). Czyli, jeśli przy wpisywaniu pomylimy się na piątym miejscu to algorytm tego nie wykryje. Zupełny idiotyzm prawda?

Krzysztof z Nowego Sącza – jeden z czytelników zaproponował metodę weryfikacji, która omija ten błąd wag REGONu 14.

„Ja to zrobilem tak – w 1 etapie weryfikuję 9 cyfr (9-ta kontrolna) i w przypadku pozytywnego wyniku weryfikuję 14 cyfr (14 kontrolna)”

Współczynniki wagowe są objęte tajemnicą służbową (tajne?) i żeby je poznać należy złożyć podanie do GUSu 🙂 Żeby je uzyskać musiałem wykonać kilka rozmów międzymiastowych i złożyć zapewnienie, że nie bedę tej wiadomości rozpowszechniał.
Jeden z pracowników GUS wyjaśnił mi, że informacje zawarte na tej stronie mogą byc wykorzystane do fałszowania dokumentów. Jeżeli więc, czytelniku, zamierzasz sfałszować jakis dokument to ostrzegam, że fałszerstwa dokumentów są wykrywalne innymi metodami i fałszerstwo jest karalne.

Oczywiście średnio zdolny matematyk/programista na podstawie kilkudziesięciu poprawnych numerów – znalezionych w internecie – może sobie wagi odtworzyć, a średnio zdolny haker może je znaleźć w kodzie binarnym programu PESEL.EXE, który można załadować z linku na dole tej strony. Chyba nie jest to trudne bo kilka osób to już zrobiło :).

BobbyK zastosował metodę kombinowaną – dedukcyjno-brutalno-podpieraną 🙂 . Dedukcyjnie znalazł wagi na kilku miejscach, potem brutalnie sprawdzał wszystkie możliwości na nieznanych wagach. Po znalezieniu wag wygenerował tysiące regonów14 i podparł się programem pesel.exe aby je zweryfikować. Szczegóły na stronie BobbyK – pouczające dla studentów informatyki i jest morał na końcu.

Jeśli się już ma program PESEL.EXE (pracujący w oknie DOSa w Windows) i IQ ≥ 110 to już znalezienie wag jest dziecinnie proste.
Fragment postu fotomodelki, kończącego awanturkę, która wyniknęła z błędnej weryfikacji numeru REGON (4-4-2004)

W celu weryfikacji numeru REGON skorzystałam z kalkulatorów jakie znajdują się na kilku stronach internetowych (do twórców, których też mam zamiar napisać, aby dodały istotne „uwaga”, aby nikt więcej nie popełnił takiego błędu jak ja ):

http://www.pko.pl/f/regon.htm
http://dione.ids.pl/~radek/code/regon.html
http://www.podatki.pl/kalkulator/30/index16.htm
http://panorama.infor.pl/kalkulatory/regonnip.php
http://www.zse.bydgoszcz.pl/~sunio/kody.html
http://members.lycos.co.uk/ququqa2/regon.php
http://animatek.w.interia.pl/kody03.html

Na stronach tych wystarczy wpisać numer REGON i natychmiast uzyskuje się informację czy jest on prawidłowy, czy nie. Niestety skorzystałam właśnie z tych stron. Liczyłam też „ręcznie” i ciągle wychodziło, że jest zły.
Na stronach podane jest w jaki sposób należy wyznaczyć czy REGON jest prawidłowy czy nie. Liczy go się na zasadzie sumy iloczynów kolejnych cyfr REGONu przez odpowiadające im wagi. Następnie uzyskany wynik dzielimy modulo 11. Załóżmy, że wynik wynosi 12. Wtedy ostatnia cyfra REGONu tzw. cyfra kontrolna powinna wynosić 3 (1+2 – suma liczby dziesiątek i liczby jedności). W przypadku tej Agencji modulo 11 z liczby 186 wynosi 10, czyli cyfrą kontrolną powinna być 1 (1+0). Jednak to zły wniosek, czego już nie napisano na powyższych stronach.
Jedynie na stronie:
http://chemeng.p.lodz.pl/zylla/ut/nip-rego.html
jest dodana „uwaga”, że jeśli modulo liczby wynosi 10, wówczas liczbą kontrolną jest 0.

Uwaga: ktoś zwrócił mi uwagę na niezamierzony dowcip matematyczny modelki:
Następnie uzyskany wynik dzielimy modulo 11. Załóżmy, że wynik wynosi 12.
Oczywiście fragment:
powinna wynosić 3 (1+2 – suma liczby dziesiątek i liczby jedności)
świadczy o niezrozumieniu algorytmu. Zaczynam wątpić w swoje zdolności dydaktyczne 🙂 Już parę osób mi mówiło że używam niezrozumiałego języka. Ale być może umiejętność „czytania ze zrozumieniem” się zmniejszyła w naszym społeczeństwie?

Uwaga2: no dobra, podaję wagi dla REGONU-u 14-to cyfrowego:
2 4 8 5 0 9 7 3 6 1 2 4 8

Uwaga3: „powinna wynosić 3 (1+2 – suma liczby dziesiątek i liczby jedności)
dotyczy algorytmu Luhna, który stosuje się do numerów kart kredytowych i numeru IMEI (numer nadany fabrycznie indywidualnie dla każdego telefonu komórkowego)

PESEL

System PESEL – rys historyczny wg MSWIA

Rok 1970
Decyzja Prezydium Rządu z dnia 9.06.1970r. w sprawie przygotowania koncepcji Powszechnego Elektronicznego Systemu Ewidencji Ludności, którego zadaniem będzie kompleksowe ujęcie tematu „człowiek” jako centralnego podmiotu całej gospodarki.

Rok 1972
Opracowane zostały wstępne założenia koncepcji Powszechnego Elektronicznego Systemu Ewidencji Ludności,
• koncepcja przewidywała tworzenie systemu PESEL w oparciu o podstawowe i powszechne ewidencje osobowe będące w gestii resortu spraw wewnętrznych tj. ewidencje stanu cywilnego, dowodów osobistych, adresowe, zmian imion i nazwisk,
• wszystkie inne ewidencje osobowe prowadzone na terenie kraju miały uzupełniać swoimi informacjami zbiory podstawowe i pobierać z nich potrzebne informacje,
• informacje zawarte w systemie PESEL, w miarę jego rozwoju powinny powodować zanik dublowania tych informacji we wszystkich innych zbiorach.

Rok 1973
Decyzją Prezydium Rządu z 5.07.1973r. Ministerstwo Spraw Wewnętrznych wspólnie z innymi resortami zostało zobowiązane do uruchomienia podsystemu PESEL, obejmującego ewidencję osób z wyższym wykształceniem zwanego systemem MAGISTER.

Rok 1974
Decyzja Prezydium Rządu z 11.01.1974r. definiuje PESEL jako „rządowy system zautomatyzowanego gromadzenia, przetwarzania i udostępniania informacji o ludności kraju obejmujący podstawowe cechy demograficzne i służący potrzebom gospodarowania kadrami, planowania gospodarczego oraz usprawniania procesów administrowania”.

Nadawanie numeru PESEL

Art. 18.

  1. Numer PESEL jest nadawany:
    1. z urzędu – osobie, o której mowa w art. 8 ust. 1;
    2. na wniosek – osobie, o której mowa w art. 8 ust. 2.
  2. Numer PESEL nadaje minister właściwy do spraw wewnętrznych.
  3. Nadanie numeru PESEL jest czynnością materialno-techniczną.

Numer PESEL jest zmieniany w przypadku:

  • zmiany daty urodzenia;
  • zmiany płci osoby;
  • nadania numeru PESEL na skutek omyłki organu administracji mającej wpływ na numer PESEL lub wprowadzenia w błąd organu administracji o tożsamości osoby.

Numer PESEL – cyfra kontrolna

Dla numeru PESEL algorytm obliczenia cyfry kontrolnej przebiega następująco: każdej z pozycji cyfr numeru nadany został stały współczynnik zwany wagą pozycji. Każdą cyfrę numeru mnoży się przez odpowiednią wagę i sumuje się wynik mnożenia. Otrzymany wynik dzieli się modulo 10 i odejmuje od 10.

  • NB. powyższy opis spotykany jest w polskim Internecie (np. StepaRadosław Roszczyk,Marcin Sulecki) i zawiera pewien drobny błąd: Brak opisu co należy zrobić jeśli po sumowaniu iloczynów ostatnia cyfra będzie zerem. Oczywiście różnica 10-x wyjdzie 10 i wtedy należy przyjąć 0 jako cyfrę kontrolną a nie 10.
    Ten sam błąd występuje w opisach i w algorytmach zastosowanych w formularzach do weryfikacji numerów PESEL, REGON itd. stworzonych już po opublikowaniu niniejszego tekstu (np. pliszak) – trochę wstyd – prawda ?

    A ostatnio (13.8.2005) stwierdziłem, że ten błąd jest także popełniony na stronie Ministerstwa Spraw Wewnętrznych i Administracji dotyczącej właśnieSystemu PESEL – tym razem to straszny wstyd – we wrześniu 2009 nadal błąd jest nie poprawiony.
    Także na stronie http://www.pko.pl/f/pesel.htm błędnie jest weryfikowany numer PESEL z powodu tego samego błędu. (6.2.2006)

Jak łatwo zauważyć odjęcie wyniku od 10 nic w zasadzie nie zmienia ale widocznie twórcy systemu PESEL (Powszechy Elektroniczny System Ewidencji Ludności) dostali rozkaz (a były to lata siedemdziesiąte) aby trochę utrudnić rozszyfrowanie tego systemu zachodnim szpiegom 🙂.
Ale z doniesień czytelnika tej strony wynika, że cały system PESEL, chyba nawet z komputerami, był kupiony od Szwedów, więc o tajemnicy nie ma mowy. 😦 
Ale … w Szwecji personnummer, odpowiednik numeru PESEL ma tylko 10 cyfr, cyfrę kontrolną oblicza się według metody Luhn’a, algorytmu, w którym mnożnikami są przemiennie 1 i 2. Wspólnymi cechami z systemem szwedzkim są: sześciocyfrowy zapis daty urodzenia, oznaczenie płci w numerze i położenie cyfry kontrolnej na końcu numeru.
Więcej o zawartości informacyjnej systemu PESEL można znaleźć w wikipedii

Powyższy algorytm jest w zasadzie modyfikacją ogólniejszego algorytmu stosowanego przy weryfikacji numerow NIP, REGON, ISBN, ISSN, EAN itd. W ogólnym algorytmie sumę iloczynów cyfr i wag dzieli się modulo N (oblicza resztę z dzielenia przez N). Dla N=10 wynik dzielenia modulo N jest po prostu ostatnią cyfrą sumy.

 Oto przykład dla numeru PESEL 49040501580

    1 3 7 9 1 3 7 9 1 3    --> wagi
    X X X X X X X X X X Y  --> cyfry nr PESEL (Y- cyfra kontrolna)

czyli:       
            1 3 7 9 1 3 7 9 1 3
         *  4 9 0 4 0 5 0 1 5 8
        -----------------------
suma=(1*4+3*9+7*0+9*4+1*0+3*5+7*0+9*1+1*5+3*8)=
    =(  4+ 27+  0+ 36+  0+ 15+  0+  9+  5+ 24)=  120

          120 mod 10 = 0

           10 - 0 =  10   ----> cyfra kontrolna ?
 korekta: dla wyniku 10   ----> cyfra kontrolna = 0
Uzyskany wynik jest cyfrą kontrolną numeru, który w naszym przypadku ma postać: 49040501580 i dotyczy kobiety urodzonej: 5 kwietnia 1949 roku. W przypadku wprowadzenia błędnego numeru PESEL, komputer po obliczeniu cyfry kontrolnej może ten błąd wykryć, gdyż np: jeśli pomylimy się i zamiast 49040501580 podamy 46040501580 to otrzymamy:
            1 3 7 9 1 3 7 9 1 3
         *  4 6 0 4 0 5 0 1 5 8
        -----------------------
suma=(1*4+3*6+7*0+9*4+1*0+3*5+7*0+9*1+1*5+3*8)=
    =(  4+ 18+  0+ 36+  0+ 15+  0+  9+  5+ 24)=  111
          111 mod 10 = 1
           10 - 1 =  9

Obliczona cyfra kontrolna to 9, podczas gdy prawidłowa cyfra to 0. Oczywiście może nastąpić przypadek błędnego wprowadzenia także ostatniej cyfry.
W tym przykładzie łatwo sie pomylić gdyż na formularzu drukowanym na drukarce igłowej cyfra 0 jest podobna do cyfry 8. Wtedy algorytm przepuści błędne dane.

Weryfikacja numeru PESEL
może być wykonana według podobnego, ale prostszego algorytmu:
Do cyfr wagowych dla dziesięciu cyfr dopisujemy wagę równą 1 dla cyfry kontrolnej – czyli dla jedenastej cyfry. Sumujemy iloczyny kolejnych cyfr i ich wag. Jeśli ostatnia cyfra wyniku wynosi 0 (zero) to numer PESEL jest prawidłowy.

Łukasz Pilorz (2006) bardzo sprytnie zauważył, że „… wystarczy zmienić kolejność wag na 9-7-3-1, by pozbyć się za jednym zamachem dodatkowego kroku i problemu „10-0=10”. Szkoda, że sam na to nie wpadłem 🙂
Ale ściśle rzecz biorąc nie chodzi o zamianę kolejności wag 1-3-7-9 ale o użycie wag, które są dopełnieniem starych wag do liczby użytej jako modulo sumy iloczynów.

              10 10 10 10
  stare wagi  -1 -3 -7 -9
  ________________________
  nowe wagi    9  7  3  1

dla nowych wag:       
            9 7 3 1 9 7 3 1 9 7
         *  4 9 0 4 0 5 0 1 5 8
        -----------------------
suma=(9*4+7*9+3*0+1*4+9*0+7*5+3*0+1*1+9*5+7*8)=
    =( 36+ 63+  0+  4+  0+ 35+  0+  1+ 45+ 56)=  240

          240 mod 10 = 0  wynik jest cyfrą kontrolną 
                          nie wymaga odejmowania od 10

Alternatywne zestawy wag do weryfikacji – (dopisane 27.10.2011r)

Do algorytmu weryfikacji można też użyć innych zestawów wag.
Powszechnie znany w internecie zestaw wag: (1 3 7 9 1 3 7 9 1 3 1). Następne zestawy: (3 9 1 7 3 9 1 7 3 9 3), (9 7 3 1 9 7 3 1 9 7 9), (7 1 9 3 7 1 9 3 7 1 7).

Jaki jest związek między tymi czterema zestawami wag? Dla członków MENSY nie powinno być problemu z odgadnięciem 🙂

Druga zagadka. Skoro każdy z tych czterech zestawów może byc użyty, to który z nich jest używany przez MSWiA i system PESEL? Niestety nie dotarłem do oficjalnego dokumentu na ten temat.

Dlaczego w wagach użyto cyfr 1 3 7 9 ? Proszę zwrócić uwagę, że w wagach brak jest cyfry 5. Dlaczego?
Ponieważ gdyby była cyfra 5 to przy pomyłkowym wprowadzeniu 3 zamiast 5 otrzymalibyśmy wprawdzie inną sumę kontrolną, ale cyfra kontrolna byłaby taka sama: bo 5×5=253×5=15 i oba wyniki kończą się tą samą cyfrą 5
Z tych samych powodów w wagach nie występuje żadna liczba parzysta, a tym bardziej zero!

Bardziej matematyczny dowód sensowności użycia wag 1 3 7 9 przy dzieleniu modulo 10 oraz wyższość dzielenia modulo 11 pokazałem na stronie wagi. Jest tam także analizowana odporność powyższych wag i wag algorytmu Luhna na czeskie błędy.

Weryfikacja sensowności numeru PESEL

Jak wiadomo w numerze PESEL są zakodowane informacje o dacie urodzenia i płci danej osoby. Prawdziwość numeru PESEL, tzn. czy konkretny PESEL jest przypisany jakiejś osobie, można tylko zweryfikować w samym systemie PESEL. A do tego systemu mają tylko dostęp wybrane urzędy. Zwykły obywatel może się dowiedzieć za pieniądze!

Można natomiast, oprócz cyfry kontrolnej, sprawdzić sensowność daty urodzenia.

Przykładowy numer PESEL =49040501580 zdekodujemy:

49 oznacza rok urodzenie 1949,
04 oznacza miesiąc 4. czyli kwiecień,
05 oznacza dzień 5.

A jak jest załatwiany problem wieku XIX, XX, XXI?
Dla wieku XX do numeru miesiąca dodaje się 00 – czyli nic się nie dodaje. Dla wieku XXI dodaje się 20, dla wieku XXII dodaje się 40, dla wieku XXIII dodaje się 60. Natomiast 80 dodaje się do numeru miesiąca dla wieku XIX.

Wiadomo, że numer roku może przyjąć dowolną wartość od 00 do 99, natomiast numer miesiąca wartości od 01 do 12. Gorzej jest z numerem dnia w miasiącu gdyż jest to wartość zmienna w zakresie od 1 do 31. W różnych miesiącach może to być 30 lub 31, a dla lutego może być to 28 lub 29 zależnie od przestępności roku. Jednym słowem trzeba użyć jakiejś procedury, która sprawdzi poprawność daty. W języku programowania PHP używanym powszechnie do obróbki danych w serwisach internetowych jest to dość proste.

Krótko:   taki PESEL   00000000000 ma prawidłową cyfrę kontrolną, ale jest w oczywisty sposób bezsensowny. Rozkodowana data urodzenia to:
rok=1900 miesiąc=00 dzień=00
Raczej bez sensu. Niestety niektóre weryfikatory pokazują takie bzdury. Patrz przykładowy program sprawdzacz:
http://code.google.com/p/sprawdzacz/

Czy algorytm sumy kontrolnej jest optymalny ?

W jednym z tekstów w internecie podano, że stopa błędów tego algorytmu wynosi 2,3% – być może chodzi o czeskie błędy. Ale według mnie wynosi 10% co łatwo wyliczyć jeśli uwzględnimy, że cyfra kontrolna może przyjąć 10 wartości, z których jedna jest prawidłowa. Z elementarnego rachunku prawdopodobieństwa wychodzi 1/10*100% = 10%.
Co więcej, wskutek przyjęcia tych samych wag dla cyfr roku i cyfr dnia algorytm jest podatny na błędne podanie daty urodzenia przy nadawaniu numeru PESEL przez tajne (brak jego strony w internecie) Rządowe Centrum Informatyczne „PESEL” lub jego terenowy oddział. Pamiętajmy, że w numerze PESEL zakodowana jest data urodzenia konkretnej osoby. Dla przykładu osoba urodzona 11 maja 1912 roku powinna być zakodowana jako 120511xxxxk. Tymczasem przy wprowadzaniu łatwo się pomylić i wpisać w kolejności dzień miesiąc rok jako: 110512xxxxk. Oba takie numery PESEL będą miały tę samą cyfrę kontrolną.

Ciekawostki w kodowaniu numeru PESEL

  • Dwie pierwsze cyfry oznaczają ostatnie dwie cyfry w roku urodzenia. Dla przykładu osoba urodzona w roku 1966 ma w numerze PESEL 66mmddxxxxk.
  • Cyfra trzecia i czwarta oznaczają miesiąc urodzenia.
  • Ale jeśli dana osoba urodziła się przed rokiem 1900, ale po roku 1800 to do liczby miesiąca dodaje się 80. Dla przykładu: osoba urodzona 1 grudnia 1898 ma numer PESEL 989201xxxxk
  • Osoby urodzone w roku 2000 i później mają powiększony numer miesiąca o liczbę 20. Dla przykładu osoba urodzona 1 grudnia 2000 będzie miała numer PESEL 003201xxxxk
  • Cyfry piąta i szósta oznaczają dzień urodzenia.
  • W cyfrach siódmej, ósmej, dziewiątej i dziesiątej zakodowany jest numer seryjny 🙂 danego osobnika.
  • W dziesiątej cyfrze PESEL zakodowana jest jednocześnie płeć osoby: nieparzysta oznacza mężczyznę, a parzysta kobietę. Ciekawostka: w wielu podobnych do PESELa numerów nadawanych w krajach europejskich nieparzysta cyfra oznacza mężczyznę a parzysta kobietę.
  • W jedenastej jest oczywiście słynna cyfra kontrolna.
  • Na razie brak danych do rozkodowania innych informacji tam zawartych. Nie wiadomo, na przykład, co decyduje czy dana kobieta jako kod płci dostanie 0, 2, 4, 6 czy 8.  . . . badania trwają :-)NB1 Oto tekścik na ten temat w dodatku „Komputer” do Gazety Wyborczej z 1995 roku.
    NB2 Według niektórych opinii (uwaga jednego czytelników tego tekstu) ” … ‚nr seryjny’ jest zakodowany na cyfrach 7-10, tylko kobietom są przydzielane kolejne numerki parzyste, a chłopcom – kolejne nieparzyste.
    A co do innych zakodowanych informacji, to jeśli by tam takowe były, to byłoby to absolutnie nielegalne w świetle ustawy o ochronie danych osobowych (coś tam takiego jest, że nadawanie cyfrom ukrytych znaczeń we wszelkich numerach ewidencyjnych jest zabronione – oprócz oznaczenia płci i daty urodzenia). Ale kto wie… ;)))”
    (moja uwaga na temat ukrytego znaczenia) – system PESEL powstał na długo przed ustawą o ochronie danych osobowych – więc nie musiał być z nią zgodny.
  • W styczniu 2001 zauważyłem stroniczkę na temat Centralnych Rejestrów Państwowych PESEL na serwerze Ministerstwa Spraw Wewnętrznych i Administracji. Jest tam troszkę informacji na ten temat. W roku 2005 był aktualny raczej ten link System PESEL, ale w roku 2008 jest jeszcze gdzie indziej PESEL.
  • Ostatnio zdobyłem z pewnej bazy danych sporą pulę numerów PESEL (bez nazwisk i innych danych osobowych, żeby uspokoić GIODO) i mogłem przeanalizować ‚numery seryjne’ zawarte w peselu. Okazuje się, że nie są to numery kolejne. Bowiem najwyższy numer seryjny jaki widziałem w tej puli wynosił (RRMMDDnnnnK) nnnn=9896. Nie wyobrażam sobie ażeby w dniu, w którym urodziła się ta kobieta urodziło się prawie dziesięć tysięcy dzieci. Według mnie ten ‚numer seryjny’ został wygenerowany sztucznie, a nie jako kolejny numer osobniczy. Dlaczego – tego już nie wiem.
    Przy okazji tej analizy potwierdziła się pewna dziwaczność jeśli chodzi o rozkład częstotliwości urodzeń w ciągu roku. Patrz moje odkrycie.
  • Pytanie: ile rodzi się dzieci każdego dnia?
    Tu jest dokładna liczba: gazeta.pl Cytat : „Główny Urząd Statystyczny podaje w raporcie ‚Podstawowe informacje o sytuacji demograficznej Polski w 2011 roku’, że w 2011 r. urodziło się ok. 391 tys. dzieci. Jest to ponad 22 tys. mniej niż przed rokiem. W latach 2003-2009 odnotowano stopniowy wzrost liczby urodzin z 351 tys. do 417,6 tys. W 2010 roku urodziło się już tylko 413 tys. dzieci.”
    Jest też tam wykres dla lat od 1946 do teraz:

Liczba urodzeń w Polsce w latach 1946-2011 w tysiącach. Dane GUS

Z tego wykresu wynika, że maksimum wyszło w latach 1951-56 i wynosiło ok 800tys/rok

Czyli rocznie to było maksymalnie 800 tys dzieci.
Dziennie daje to 800000/365 = 2192 dzieci na dzień.
Ale w ciągu roku ta liczba się waha, więc przyjmijmy, że to jest maksymalnie 3tys dzieci na dzień. Przyjmijmy 1500 dziewczynek i 1500 chłopców.

Jeżeli ponumerujemy wszystkie te dzieci urodzone tego samego dnia to ostatnie dziecko będzie miało numer 3000. Kolejnymi liczbami parzystymi numerujemy dziewczynki, a nieparzystymi numerujemy chłopców.
Przypuśćmy, że dzieci się urodziły 1 stycznia 1999 roku.
Pierwsza dziewczynka wpisana do rejestru PESEL będzie miała numer PESEL = 990101 0000 2
Pierwsza część to data urodzenia, druga to numer kolejny a ostatnia to cyfra kontrolna.
Pierwszy chłopiec będzie miał numer PESEL 990101 0001 9.
Ostatnia dziewczynka może mieć numer PESEL 990101 3000 1.

Jak więc widać, cztery cyfry na numer kolejny wystarczają.
Pamiętajmy, że wykorzystujemy też cyfrę do kodowania płci, ale ta ósma cyfra ma dziesięć różnych wartości. Połowa z nich jest dla dziewczynek, a połowa dla chłopców.
A siódma cyfra to nie tylko 0 i 1.
W zbiorze różnych prawdziwych numerów PESEL na siódmym miejscu mam:
2737 razy cyfrę 0, 648 razy cyfrę 1, 25 razy cyfrę 2, 5 razy cyfrę 3, dwa razy cyfrę 4, trzy razy cyfrę 5, dwa razy cyfrę 6, jeden raz cyfrę 8.

  • Przykład kodu php do weryfikacji numeru PESEL
    <?php 
    function vpesel($PESEL,$sex="?") {
     if ($PESEL[9] % 2 and $sex=="K") return false;
       else if (!$PESEL[9] % 2 and $sex!="M") return false;
     $w = array(1,3,7,9);
     for ($i=0;$i<=9;$i++)
       $wk = ($wk+$PESEL[$i]*$w[$i % 4]) % 10;
     $k = (10-$wk) % 10;
     if ($PESEL[10]==$k) return true;
       else return false;
    }
    ?>

    Zatem funkcja:

    bool(string pesel [,string sex])zwraca true jeżeli nr PESEL jest poprawny, w przeciwnym wypadku false.

    Przykłady wywołań:

    vpesel("74021834012") – jeżeli nie mamy informacji o płci
    vpesel("74021834012","M"); – jeżeli wiemy, że to mężczyzna
    vpesel("74021834012","K"); – jeżeli wiemy, że to kobieta

    Powyższy kod i komentarz pochodzi z
    http://www.szewo.com/php/pesel.phtml

    Pan Arkadiusz Kusznierski (wrzesień 2008) napisał:
    Pozwolę sobie na mały komentarz odnośnie poprawności działania algorytmu. …
    W kodzie php (funkcja vpesel) … jest mały błąd.
    W linii nr 4 jest warunek $sex!="M" natomiast na stronie http://www.szewo.com/php/pesel.phtml warunek ten ma postać $sex=="M".
    Moim zdaniem poprawny jest warunek $sex=="M".
    Jeśli funkcję vpesel wywołamy nie znając płci (na przykładvpesel("80031317708")😉 to warunek $sex!="M" będzie prawdą ponieważ argument domyślny funkcji $sex ma wartość „?”. Wtedy dla numerów pesel posiadających na przedostatniej pozycji 0 (zero) cały warunek pętliif w linii 4 będzie prawdą i funkcja zwróci false. A nie powinna. Jeśli wywołujemy funkcję vpesel bez podawania płci linie 3 i 4 nie powinny zwracać false. W takim przypadku algorytm powinien wykonać się do końca.

 

Przetestowałem obie wersje funkcji (starszą i nowszą) i stwierdziłem, że obie dają w pewnych sytuacjach błędy. Nowsza daje mniej błędów 🙂


Proszę zwrócić uwagę na wynik trzeci od dołu. Cyfra 2 wskazuje, że to kobieta. Testujemy czy to Mężczyzna, a funkcja mówi, że to prawda.

Poprawiony kod funkcji daje poprawny wynik dla wszystkich testowanych przypadków


Diabeł tkwi w szczegółach.
Aktualny kod ‚szewo’:
else if (!$PESEL[9] % 2 and $sex=="M") return false;
Mój poprawiony kod:
else if (!($PESEL[9] % 2) and $sex=="M") return false;
Proszę zwrócić uwagę na wzięcie w nawias wyniku dzielenia modulo, przez co wymuszamy zmianę kolejności działań.

Kod programu testującego vpesel1.php

Arkadiusz napisał potem: Operator negacji ma wyższy priorytet niż operator modulo co powoduje, że negacja zawsze wykona się przed działaniem modulo.
Wprowadzenie nawiasów zamienia tę kolejność i o to nam chodzi.
Brak tych dodatkowych nawiasów powodował błąd dla PESEL nr 74021834025, natomiast nałożenie się dwóch błędów (brak nawiasów i warunek $sex!="M") powodował błędy dla nr PESEL mających 0 (zero) na 9 pozycji (np. dla PESEL nr 80031317708).
Brak nawiasów powoduje, że operacja negacji jest wykonywana na argumentach z zakresu od 0 do 9. Interpreter php przed wykonaniem negacji dokona niejawnej konwersji typów z integer na boolean. Jeśli było 0 (zero) to przekonwertuje na false, a jeśli argumenty były z przedziału od 1 do 9 to przekonwertuje na true. To właśnie powoduje błędy.

Mała ciekawostka na koniec. Wywołanie vpesel(„aleglupitxt”); zwróci true, więc warto zabezpieczyć funkcję vpesel przed takim wywołaniem.

  • Kod arkusza Excela do obliczenia cyfry kontrolnej dla wielu wprowadzonych numerów PESEL — niewielka przeróbka umożliwia weryfikację.
    arkusz pesel3.xls (44kB)
  • Ciekawostka: w wielu podobnych do PESELa numerów nadawanych w krajach europejskich nieparzysta cyfra na pewnej pozycji oznacza mężczyznę a parzysta kobietę. I co ciekawsze po zmianie płci przydzielany jest nowy numer 🙂

 

Tak zwany System PESEL2

Komunikat o zakończeniu realizacji Projektu PESEL2 –serwer MSWiA

Realizacja Projektu PESEL2, tworzonego przez MSWiA w ramach działania 1.5 Sektorowego Programu Operacyjnego Wzrost Konkurencyjności Przedsiębiorstw, została zakończona dnia 30 września 2008 roku.

W grudniu 2007 roku, z uwagi na znaczące opóźnienia w realizacji Projektu w latach 2005-2007, MSWiA opracowało plan naprawczy, który zakładał istotne ograniczenie zakresu projektu do elementów realizowalnych w czasie pozostałym do rozliczenia projektu. Uzgodniony zakres usług obejmował gruntowną modernizację infrastruktury sprzętowej centralnych rejestrów państwowych wraz z uruchomieniem w jej środowisku e-usług. Z powodzeniem wykonano modernizację systemu rejestrów państwowych funkcjonującego na przestarzałym środowisku informatycznym „JANTAR” (pochodzącym z lat 70-tych). Zrealizowano również następujące usługi:

  1. „Weryfikacja istnienia dowodu osobistego, zawierającego określony zestaw danych w bazie aktualnych dowodów osobistych” – po podaniu określonych informacji zawartych w dowodzie osobistym usługa wyszukuje dokument w Ogólnokrajowej Ewidencji Wydanych i Unieważnionych Dowodów Osobistych. W przypadku, gdy podane informacje będą zgodne z zapisami w bazie danych, system zwróci informację o pomyślnej weryfikacji.
  2. „Weryfikacja danych adresowych osób ewidencjonowanych w rejestrze PESEL” – na podstawie danych osoby i wskazanego adres, usługa pozwala zweryfikować, czy osoba jest zameldowana pod podanym adresem.
  3. „Udostępnianie danych adresowych osób ewidencjonowanych w rejestrze PESEL” – po wprowadzeniu danych osoby usługa pozwala uzyskać jej bieżący adres zameldowania.

Usługi są dostępne dla przedsiębiorców: pierwsze dwie w trybie teletransmisji, a trzecia przez elektroniczną Platformę Usług Administracji Publicznej.

Przebudowując rejestry państwowe, zdecydowano się wykorzystać rozwiązania technologiczne pozwalające sprawnie i dynamicznie zreformować eksploatowane systemy w celu ich dostosowania do planowanego odmiejscowienia czynności urzędowych. Pomyślnie zrealizowane zadania nakreślone w ramach planu naprawczego stanowią podstawy do rozpoczęcia przez MSWiA prac nad projektem pl.ID – elektronicznym dokumentem tożsamości.

ISBN

ISBN – International Standard Book Number
Międzynarodowy Znormalizowany Numer Książki

stary numer
sam numer bez napisu ‚ISBN’,
P.K. Dick, ‚A Maze of Death’, 1973
numer ISBN
Kod paskowy UPC oddzielony od numeru ISBN, ‚The G Spot’, 1982r.
stary ISBN
Numer ISBN-10 1998r.
nowy  ISBN
Numer ISBN-13 i kod kreskowy obowiązujący od 1 stycznia 2007r.

ISBN był utworzony w Wielkiej Brytanii w 1966 r. przez sieć księgarni W.H.Smith i używany do roku 1974 jako system 9. cyfrowy (SBN). W 1970 został zaadaptowany jako standard ISO 2108.

Numer ISBN składał się z dziewięciu cyfr i znaku kontrolnego (cyfry 0-9 i X) oraz kodu paskowego. Numer zbudowany jest z trzech części. Pierwsza toidentyfikator grupy rejestracyjnej – oznacza język albo kraj wydawcy. Polska ma przydzielony numer 83. Druga część to identyfikator wydawcy występującego o rejestrację, a trzecia to identyfikator publikacji. Poszczególne części oddzielane są myślnikiem (znakiem -). Rozmiary tych części nie są stałe. Mały wydawca będzie miał dłuższy identyfikator wydawcy i mniej cyfr na identyfikator publikacji. Natomiast duży wydawca ma krótszy identyfikator wydawcy i więcej miejsca na identyfikator publikacji. Jeżeli wydawca wyczerpie swoją pulę identyfikatorów publikacji to przyznawany jest mu nowy identyfikator wydawcy.

Od 1 stycznia 2007 ISBN jest 13-to cyfrowy i zgodny z EAN-13. W okresie przejściowym nad kodem paskowym umieszczany był ‚stary’ numer ISBN a teraz ‚nowy’ numer ISBN identyczny z numerem EAN-13 umieszczonym pod kodem paskowym. Numer ISBN-13 składa się z numeru 978 lub 979 i 9 cyfr numeru ISBN-10. Cyfra kontrolna umieszczona na końcu jest liczona jak dla numeru EAN-13.

Numery ISBN są nadawane przez Krajowe Biuro ISBN które ma siedzibę w Bibliotece Narodowej, Al. Niepodległości 213, 00-973 Warszawa, tel. 608-24-10, tel.fax (0-22) 608-24-33.
Więcej szczegółów w Instrukcji_ISBN.doc wg. normy PN-ISO 2108:2006

Książki wydane w USA, Niemczech, Francji, Hiszpanii i Wielkiej Brytanii można wyszukać po autorze, tytule, słowach kluczowych lub numerze ISBN na stroniehttp://www.isbn.pl

  Obliczanie cyfry kontrolnej dla starego identyfikatora ISBN

kolejne 9 cyfr numeru mnożymy przez wagi,
które wynoszą kolejno 10,9,8,7,6,5,4,3,2
sumę dzielimy Modulo 11
odejmujemy tę wartość od 11
jeśli wynik =11 wtedy jako cyfrę kontrolną wstawiamy 0
jeśli wynik =10 wtedy jako cyfrę kontrolną wstawiamy duże X
w pozostałych przypadkach wynik jest cyfrą kontrolną.
Przykład dla numeru identyfikacyjnego ISBN 83-85784-25-X

           10 9 8 7 6 5 4 3 2         -> wagi
         *  8 3 8 5 7 8 4 2 5         -> nr ISBN 
                                        (bez cyfry kontr.)
        ---------------------
suma= (10*8+9*3+8*8+7*5+6*7+5*8+4*4+3*2+2*5)=
    = (  80+ 27+ 64+ 35+ 42+ 40+ 16+  6+ 10)=  320

           320 mod 11 = 1 ----> (11-1)=10 cyfra kontrolna X

Formalnie:
n10 = 11 – (10·n1 + 9·n2 + 8·n3 + 7·n4 + 6·n5 + 5·n6 + 4·n7 + 3·n8 + 2·n9) mod 11

Warto zauważyć, że ponieważ 11 jest liczbą pierwszą to użyty algorytm cyfry kontrolnej zapewnia wykrywanie zarówno zamian pojedynczej cyfry jak i czeskich błędów tj zamiany kolejności dwóch sąsiednich cyfr. Jeśli błąd w cyfrze kontrolnej powstanie u wydawcy to książka jest wypuszczana z błędną cyfrą kontrolną.

 ISMN International Standard Music Number
Międzynarodowy znormalizowany numer druku muzycznego

W normie PN-ISO 10957:2000 określono sposób jednoznacznej identyfikacji opublikowanych druków muzycznych. Normalizuje to i promuje na skalę międzynarodową zastosowanie numerów druków muzycznych w celu odróżnienia wydania danego tytułu lub odrębnej części wydania od wszystkich innych wydań lub części, za pomocą niepowtarzalnego międzynarodowego znormalizowanego numeru druku muzycznego, złożonego z następujących elementów: poprzedzonej skrótem ISMN litery M jako przedrostka, identyfikatora wydawcy, identyfikatora pozycji, cyfry kontrolnej. Określono także miejsce umieszczenia numeru na drukowanej publikacji muzycznej.

  Cyfra kontrolna dla numeru ISMN

literę M zamieniamy na cyfrę 3,
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 dla numeru ISMN M9005202-2-7

           3 1 3 1 3 1 3 1 3        -> wagi
         * 3 9 0 0 5 2 0 2 2        -> nr ISMN  
                                      (bez cyfry kontr.)
        --------------------
suma= (3*3+1*9+3*0+1*0+3*5+1*2+3*0+1*2+3*2)=
    = (  9+  9+  0+  0+ 15+  2+  0+  2+  6)=  33

           33 mod 10 = 3 ----> (10-3) cyfra kontrolna 7
  Nowy ISMN-13 = zmiana 10-cyfrowych na 13-cyfrowe kody

Krajowe Biuro ISMN informuje, że w 2008 r. wchodzi w życie nowa międzynarodowa norma ISO 10957, zgodnie z którą numery ISMN zmienią się z 10 na 13-cyfrowe.
Obecnie obowiązujące numery ISMN zostaną poprzedzone prefiksem 979 a litera M występująca w numerze zostanie zastąpiona cyfrą 0.
Numery nie muszą być przeliczane, ponieważ cyfra kontrolna pozostaje bez zmian.
Cyfry w nowym 13-cyfrowym numerze ISMN będą identyczne z cyframi w numerze Musicland/ISMN używanym w kodzie kreskowym EAN.

Przykład:

Nr 10-cyfrowy  ISMN      M-9013300-0-9 
Nr 13-cyfrowy  ISMN  979-0-9013300-0-9

  ISSN International International Standard Serial Number,
Międzynarodowy znormalizowany numer wydawnictwa ciągłego

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.
jeśli wynik =11 wtedy jako cyfrę kontrolną wstawiamy 0
jeśli wynik =10 wtedy jako cyfrę kontrolną wstawiamy duże X
w pozostałych przypadkach wynik jest cyfrą kontrolną.
Przykład dla numeru ISSN 0867-0153

           8 7 6 5 4 3 2         -> wagi
         * 0 8 6 7 0 1 5         -> nr ISSN  
                                   (bez cyfry kontr.)
        -----------------
suma= (8*0+7*8+6*6+5*7+4*0+3*1+2*5 )=
    = (  0+ 56+ 36+ 35+  0+  3+ 10 )= 140

          140 mod 11 = 8 ---- > (11-8) cyfra kontrolna 3

Warto zauważyć, że ponieważ 11 jest liczbą pierwszą to użyty algorytm cyfry kontrolnej zapewnia wykrywanie zarówno zamiany pojedynczej cyfry jak i czeskich błędów tj. zamiany kolejności dwóch sąsiednich cyfr.

  Przejście ze starego na nowy numer ISSN

kod kreskowy ISSNW okresie przejściowym nad kodem kreskowym umieszcza się ‚stary’ kod ISSN składający się z liter ISSN i 8 cyfr.
Nowy kod, drukowany pod kodem kreskowym, zawiera 13 cyfr zgodnie z kodem EAN-13 i składa się z cyfr ‚977’, 7 cyfr starego kodu (bez starej cyfry kontrolnej), dwóch cyfr informacji o mutacji gazety/czasopisma oraz cyfry kontrolnej obliczonej według standardu EAN13.
Dodatkowe informacje o numerze zapisane są w tzw. add-on. Mogą to być oznaczenia numeru tygodnia dla gazety lub numeru czasopisma w roku.

Dla gazety codziennej, w dwóch cyfrach add-on koduje się numer tygodnia w roku. np piątek 21 stycznia 2011, numer tygodnia=03.
Dwie cyfry w numerze głównym ISSN przeznaczone są na oznaczenie wariantu gazety; np. 04 mogą oznaczać wydanie czwartkowe, a 05 piątkowe, warszawskie,
a 14 i 15 mogą oznaczać wydanie czwartkowe i piątkowe, łódzkie.
W numerze zwykle nie koduje się roku wydania gazety, ale stosowany jest także drugi sposób, w którym koduje się ostatnią cyfrę roku wydania tak jak dla czasopism.
W numerze EAN13 dla ISSN czasopism, koduje się rok wydania czasopisma, oraz numer w roku – patrz Standardy … poniżej.

Więcej szczegółów na temat ISNN, kodów krajów, języków, wydań itd…
ISSN-manual-2009.pdf – po angielsku.
Standardy oznaczania książek i wydawnictw ciągłych (prasy) kodami kreskowymi
Generator kodów kreskowych EAN-13, ISSN, ISBN online

Więcej na temat kodów kreskowych, budowy numeru EAN-13, EAN-8, ISBN itp
wipos.p.lodz.pl/zylla/ut/barcode/ albo
www.peernet.com/reports/barcodes.html
Jak zostać wydawcą czyli jak zdobyć numer ISBN

 EAN

EAN – European Article Number

kod kreskowyNumer EAN13 to ten numer pisany pod kodem kreskowym na praktycznie każdym artykule kupowanym w sklepie.
W numerze EAN-13 dwie lub trzy pierwsze cyfry (prefiks) oznaczają kod kraju lub rodzaju produktu, a kolejne cyfry to identyfikator producenta, numer produktu i cyfra kontrolna dla 12 wcześniejszych cyfr.
Specjalna grupa numerów zaczynająca się od cyfry 2 oznacza produkty o zmiennej ilości lub cenie np. jabłka, marchew, paczkowane mięso itp. W tym przypadku w samym numerze EAN13 zakodowany jest indywidualny numer produktu w bazie danych konkretnego sklepu oraz waga lub cena danego produktu. Część numeru EAN13 zawierająca wagę lub cenę ma dodatkową cyfrę kontrolną obliczaną innymrodzajem algorytmu.
W przypadku książek, periodyków lub nagrań muzyki zamiast kodu kraju producenta lub dystrybutora stosuje się prefiksy 978 lub 979 i numer ISBN lub prefiks 977 dla ISSN.
Nadawaniem numerów EAN zajmuje się w Polsce Centrum Kodów Kreskowych w Instytucie Logistyki i Magazynowania w Poznaniu.
W swoich broszurach podają taki opis algorytmu obliczania cyfry kontrolnej:
Kolejność obliczeń:

  1. zsumować wartości cyfr na miejscach parzystych,
  2. pomnożyć wynik pozycji a) przez liczbę 3,
  3. zsumować wartości cyfr na miejscach nieparzystych, zaczynając od miejsca trzeciego,
  4. zsumować wyniki pozycji b) i c),
  5. cyfrą kontrolną jest najmniejsza liczba, która po dodaniu do wyniku pozycji d) 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 troche zawiły opis można zamienić na poniższy algorytm.
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 dla numeru EAN13     5 901234 123457

          1 3 1 3 1 3 1 3 1 3 1 3     -> wagi
        * 5 9 0 1 2 3 4 1 2 3 4 5     -> nr EAN13  
                                        (bez cyfry kontr.)
        -------------------------
suma= (1*5+3*9+1*0+3*1+1*2+3*3+1*4+3*1+1*2+3*3+1*4+3*5)=
    = (  5+ 27+  0+  3+  2+  9+  4+  3+  2+  9+  4+ 15)= 83

           83 mod 10 = 3 ----> (10-3) cyfra kontrolna 7

Więcej informacji o kodach EAN-13 można znaleźć na stronachwww.gs1pl.org/symboliki.php
Na mojej stronie barcode można wygenerować obrazek zawierający kod paskowy dla dowolnego numeru EAN-13.

Na stronie www.gepir.pl/Strony/party_by_gtin.aspx można zidentyfikować producenta na podstawie numeru pod kodem paskowym EAN/UCC-8, EAN/UCC-13, SSCC, GLN.

Dla towarów z Austrii, Danii, Niemiec, Polski i chyba z całej Europy producenta można zdekodować (nazwa firmy, adres, tel, fax, email) na stronie GS1 Germanyhttp://www.gepir.de/v31_client/getin.aspx

Jeśli ktoś potrzebuje procedurę do generowania cyfry kontrolnej dla EAN13 w VBA (Visual Basic for Application) dla Accessa v.8 to zapraszam nahttp://access.w.interia.pl/ean13_vba.html. Jest tam ładnie skomentowany kod.

Formuła w Excelu, umożliwiająca obliczanie cyfry kontrolnej numerów 13-cyfrowych. Plik udostępniany uczestnikom systemu GS1 przez firmę Platinet. ExcelFile LINK  

Dla numeru EAN8 
obliczamy sumę iloczynów cyfr przez ich wagi
wagi wynoszą kolejno 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 dla numeru EAN8 5901 2344

           3 1 3 1 3 1 3        -> wagi
         * 5 9 0 1 2 3 4        -> nr EAN8  
                                  (bez cyfry kontr.)
        -----------------
suma= (3*5+1*9+3*0+1*1+3*2+1*3+3*4 )=
    = ( 15+  9+  0+  1+  6+  3+ 12 )=  46

           46 mod 10 = 6 ----> (10-6) cyfra kontrolna 4

Kody kreskowe postNET
Kod PostNET stosowany m. in. na kopertach przez USPS (ang. United States Postal Service) aby przyspieszyć sortowanie i przesyłanie listów. W przeciwieństwie do większości kodów kreskowych kodowanych za pomocą różnej szerokości pasków i odstępów, kod PostNET kodowany jest za pomocą wysokości pasków. Paski są takiej samej szerokości lecz różnią się wysokością.
Kod PostNET może kodować 5-cyfrowy kod pocztowy (am. ZIP code), rozszerzony kod o 4 cyfry (PostNET 9 = ZIP+4) lub 11-cyfrowy kod (PostNET 11 =DPC). Za pomocą PostNET można więc kodować kody pocztowe typowe dla USA (5 lub 9 cyfrowe). Dodatkowe dwie cyfry są używane do kodowania numeru domu lub skrytki pocztowej.
Kod PostNET zawsze zawiera cyfrę kontrolną na końcu.

Sposób sprawdzenia poprawności kodu PostNET „80122-19052”:
sumujemy wszystkie cyfry numeru; jeśli ostatnia cyfra sumy wynosi 0 (zero) to kod jest poprawny.

  • Zsumować wszystkie cyfry z kodu
    8 + 0 + 1 + 2 + 2 + 1 + 9 + 0 + 5 + 2 = 30
  • Ostatnia cyfra jest zerem więc kod jest poprawny.

Sposób obliczania cyfry kontrolnej dla kodu „80122-1905”:

  1. Zsumować wszystkie cyfry z kodu
    8 + 0 + 1 + 2 + 2 + 1 + 9 + 0 + 5 = 28
  2. Obliczyć resztę z dzielenia wyniku z punktu 1 przez 10
    28 mod 10 = 8
  3. Od liczby 10 odjąć wynik z punktu 2
    10 - 8 = 2
  4. Sumą kontrolną jest wynik z punktu 3. Jeżeli wynik ten byłby równy 10, to cyfrą kontrolną byłaby cyfra 0.
    80122-1905 2

Więcej na temat kodów kreskowych, budowy numeru EAN-13, EAN-8, ISBN itp
wipos.p.lodz.pl/zylla/ut/barcode/ albo
www.peernet.com/reports/barcodes.html
Jak zostać wydawcą czyli jak zdobyć numer ISBN

RECEPTY

Załączniki do rozporządzenia Ministra Zdrowia z dnia 10 maja 2003 r. (poz. 785)

 Załącznik nr 1

IDENTYFIKATORY ODDZIAŁÓW WOJEWÓDZKICH FUNDUSZU

Ident. Nazwa oddziału wojewódzkiego
01 Dolnośląski Oddział Narodowego Funduszu Zdrowia we Wrocławiu
02 Kujawsko-Pomorski Oddział Narodowego Funduszu Zdrowia w Bydgoszczy
03 Lubelski Oddział Narodowego Funduszu Zdrowia w Lublinie
04 Lubuski Oddział Narodowego Funduszu Zdrowia w Zielonej Górze
05 Łódzki Oddział Narodowego Funduszu Zdrowia w Łodzi
06 Małopolski Oddział Narodowego Funduszu Zdrowia w Krakowie
07 Mazowiecki Oddział Narodowego Funduszu Zdrowia w Warszawie
08 Opolski Oddział Narodowego Funduszu Zdrowia w Opolu
09 Podkarpacki Oddział Narodowego Funduszu Zdrowia w Rzeszowie
10 Podlaski Oddział Narodowego Funduszu Zdrowia w Białymstoku
11 Pomorski Oddział Narodowego Funduszu Zdrowia w Gdańsku
12 Śląski Oddział Narodowego Funduszu Zdrowia w Katowicach
13 Świętokrzyski Oddział Narodowego Funduszu Zdrowia w Kielcach
14 Warmińsko-Mazurski Oddział Narodowego Funduszu Zdrowia w Olsztynie
15 Wielkopolski Oddział Narodowego Funduszu Zdrowia w Poznaniu
16 Zachodniopomorski Oddział Narodowego Funduszu Zdrowia w Szczecinie

 Załącznik nr 3

SPOSÓB BUDOWY NUMERU RECEPTY NADAWANEGO PRZEZ FUNDUSZ

Numer recepty jest zbudowany z dwudziestu cyfr, gdzie:

  1. dwie pierwsze cyfry stanowią identyfikator właściwego oddziału wojewódzkiego Funduszu, określony w załączniku nr 1 do rozporządzenia;
  2. cyfry od trzeciej do osiemnastej są ustalane przez Fundusz;
  3. cyfra dziewiętnasta przyjmuje wartość:
    1. „5”, „6”, „7” lub „8” dla recept, o których mowa w § 9 ust. 2 rozporządzenia,
    2. „9” dla recept, o których mowa w § 12 rozporządzenia;
  4. cyfra dwudziesta jest cyfrą kontrolną obliczaną według algorytmu określonego w części II załącznika nr 4 do rozporządzenia.

 Załącznik nr 4

SPOSÓB PRZEDSTAWIANIA DANYCH W POSTACI KODU KRESKOWEGO

Część I

  1. Identyfikator upoważnionego podmiotu, o którym mowa w § 3 ust. 1 pkt 1 rozporządzenia, jest przedstawiany jako ciąg czternastu cyfr, z których:
    1. cyfra pierwsza ma wartość „2”;
    2. cyfry od drugiej do dziesiątej mają wartość określoną w § 4 ust. 1 pkt 3 lit. a lub § 4 ust. 2 pkt 3 rozporządzenia;
    3. cyfry od jedenastej do trzynastej mają wartość określoną w § 4 ust. 1 pkt 3 lit. b rozporządzenia, a jeżeli nie jest ona określona – wartość „000”;
    4. cyfra czternasta jest cyfrą kontrolną obliczaną według algorytmu określonego w części II niniejszego załącznika.
  2. Data wystawienia recepty, o której mowa w § 3 ust. 1 pkt 4 rozporządzenia, jest przedstawiana jako ciąg dziesięciu cyfr, z których:
    1. cyfra pierwsza ma wartość „4”;
    2. cyfry od drugiej do piątej określają numer roku;
    3. cyfry szósta i siódma określają numer miesiąca w roku;
    4. cyfry ósma i dziewiąta określają numer dnia miesiąca;
    5. cyfra dziesiąta jest cyfrą kontrolną obliczaną według algorytmu określonego w części II niniejszego załącznika.
  3. Numer prawa wykonywania zawodu, o którym mowa w § 3 ust. 1 pkt 5 lit. b rozporządzenia, jest przedstawiany jako ciąg dziesięciu cyfr, z których:
    1. cyfra pierwsza ma wartość „3”;
    2. cyfra druga ma wartość „0” dla numeru, o którym mowa w § 3 ust. 1 pkt 5 lit. b rozporządzenia;
    3. cyfry od trzeciej do dziewiątej przyjmują wartość odpowiedniego numeru, przy czym, jeżeli w identyfikatorze pojawiają się litery, są one pomijane, natomiast jeżeli odpowiedni numer jest krótszy niż 7 znaków, poprzedza się go odpowiednią liczbą zer;
    4. cyfra dziesiąta jest cyfrą kontrolną obliczaną według algorytmu określonego w części II niniejszego załącznika.
  4. Dane, o których mowa w ust. 1-3 niniejszego załącznika, mogą być przedstawiane w postaci jednego kodu kreskowego jako ciąg trzydziestu cyfr, z których:
    1. cyfra pierwsza ma wartość „5”;
    2. cyfry od drugiej do trzynastej określają identyfikator upoważnionego podmiotu, o którym mowa w § 3 ust. 1 pkt 1 rozporządzenia, w sposób określony w ust. 1 pkt 2 i 3 niniejszego załącznika;
    3. cyfry od czternastej do dwudziestej pierwszej określają numer prawa wykonywania zawodu, o którym mowa w § 3 ust. 1 pkt 5 lit. b rozporządzenia, w sposób określony w ust. 3 pkt 2 i 3 niniejszego załącznika;
    4. cyfry od dwudziestej drugiej do dwudziestej dziewiątej określają datę wystawienia recepty, o której mowa w § 3 ust. 1 pkt 4 rozporządzenia, w sposób określony w ust. 2 pkt 2-4 niniejszego załącznika;
    5. cyfra trzydziesta jest cyfrą kontrolną obliczaną według algorytmu określonego w części II niniejszego załącznika.
  5. Dane, o których mowa w ust. 1 i 2 niniejszego załącznika, mogą być przedstawiane w postaci jednego kodu kreskowego jako ciąg dwudziestu dwóch cyfr, z których:
    1. cyfra pierwsza ma wartość „6”;
    2. cyfry od drugiej do trzynastej określają identyfikator upoważnionego podmiotu, o którym mowa w § 3 ust. 1 pkt 1 rozporządzenia, w sposób określony w ust. 1 pkt 2 i 3 niniejszego załącznika;
    3. cyfry od czternastej do dwudziestej pierwszej określają datę wystawienia recepty, o której mowa w § 3 ust. 1 pkt 4 rozporządzenia, w sposób określony w ust. 2 pkt 2-4 niniejszego załącznika;
    4. cyfra dwudziesta druga jest cyfrą kontrolną obliczaną według algorytmu określonego w części II niniejszego załącznika.
  6. Dane, o których mowa w ust. 2 i 3 niniejszego załącznika, mogą być przedstawiane w postaci jednego kodu kreskowego jako ciąg osiemnastu cyfr, z których:
    1. cyfra pierwsza ma wartość „7”;
    2. cyfry od drugiej do dziewiątej określają numer prawa wykonywania zawodu, o którym mowa w § 3 ust. 1 pkt 5 lit. b rozporządzenia, w sposób określony w ust. 3 pkt 2 i 3 niniejszego załącznika;
    3. cyfry od dziesiątej do siedemnastej określają datę wystawienia recepty, o której mowa w § 3 ust. 1 pkt 4 rozporządzenia, w sposób określony w ust. 2 pkt 2-4 niniejszego załącznika;
    4. cyfra osiemnasta jest cyfrą kontrolną obliczaną według algorytmu określonego w części II niniejszego załącznika.
  7. Numer recepty, o którym mowa w § 3 ust. 4 pkt 2 rozporządzenia, jest przedstawiany jako ciąg dwudziestu cyfr zgodnie z załącznikiem nr 3 do rozporządzenia w postaci kodu kreskowego:
    1. „Przeplatany 2 z 5” (ITF), zgodnie z normą europejską CEN mającą status Polskiej Normy PN-EN 801: „Kody kreskowe – wymagania dotyczące symboliki ‚Przeplatany 2 z 5′” lub
    2. „UCC/EAN-128” ze standardowym Identyfikatorem Zastosowania UCC/EAN o wartości „90”, zgodnie z normami europejskimi CEN mającymi status Polskich Norm: PN-EN 799: „Kody kreskowe – wymagania dotyczące symboliki ‚Kod 128′” i PN-EN 1571: „Kody kreskowe – identyfikatory danych”.

 Część II

ALGORYTM OBLICZANIA CYFRY KONTROLNEJ

Obliczanie cyfry kontrolnej odbywa się według następujących kroków:

  1. mnożenie kolejnych cyfr kontrolowanego numeru (poza ostatnią, nieznaną jeszcze cyfrą kontrolną) przez odpowiednie wagi wynoszące: 1 dla cyfry pierwszej, 3 dla cyfry drugiej, 7 dla cyfry trzeciej, 9 dla cyfry czwartej, 1 dla cyfry piątej, 3 dla cyfry szóstej, 7 dla cyfry siódmej, 9 dla cyfry ósmej itd. cyklicznie;
  2. sumowanie uzyskanych iloczynów;
  3. wyznaczenie reszty z dzielenia całkowitego uzyskanej sumy przez 10 (modulo 10);
  4. uzyskana cyfra jest cyfrą kontrolną.

Wszystkie kody kreskowe umożliwiające automatyczny odczyt danych umieszcza się w dolnej części obszaru oznaczonego napisem „Rp.”.

BANKI

Dla numeru oddziału banku
Numery oddziałów banków w Polsce składają się z 8 cyfr, z których ostatnia jest cyfrą kontrolną – mamy więc 7 wag
do obliczenia cyfry kontrolnej wagi wynoszą kolejno 7,1,3,9,7,1,3
sumę dzielimy Modulo 10
Przykład dla numeru konta bankowego nr 11401010 (Bank Rozwoju Eksportu S.A. O/W-wa)

           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.
Jeśli ostatnia cyfra sumy iloczynów wynosi 0 to numer jest poprawny
Przykład dla numeru konta bankowego nr 11602202 (Bank Millenium Gdańsk)

           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.

Do weryfikacji cyfry kontrolnej można też użyć czterech różnych zestawów: (7,1,3,9,7,1,3,9), (1,3,9,7,1,3,9,7), (3,9,7,1,3,9,7,1), (9,7,1,3,9,7,1,3).

Dla numeru rachunku bankowego NRB – IBAN
Nowe oznakowanie NRB rachunków bankowych jest już prawie zgodne z systemem IBAN. Dwie początkowe cyferki to właśnie cyfry kontrolne.
65 1060 0076 0000 3200 0005 7153
Aby uzyskać pełną zgodność NRB z IBAN 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ę powstałą w 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 (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 90043519 5001213 145 MOD 97 = 1

     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 W[i]=10i-1 MOD 97.

  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.

Uwaga: najprostszy numer IBAN to PL04 0000 0000 0000 0000 0000 0000 !
Jest to numer nieprawdziwy bo nie odpowiada żadnemu polskiemu bankowi. Dokładniejsza procedura sprawdzająca prawidłowość numeru konta powinna także sprawdzać 8 cyfr (po kodzie PL04), które odpowiadają numerowi banku i oddziału banku. Odpowiedni algorytm jest na początku tej strony.

Dla numeru karty kredytowej
stosuje się zmodyfikowany algorytm zwany metodą Luhna.

Hans Peter Luhn (1 lipca 1896 – 19 sierpnia 1964) był informatykiem w IBM, i twórcą algorytmu Luhna i algorytmu indeksowania KWIC (Key Words In Context). Otrzymał ponad 80 patentów.
Zanim powstała informatyka pracował w drukarstwie i przemyśle tekstylnym gdzie wynalazł Lunometr – licznik nitek wątku – ciągle jeszcze używany. W tym okresie uzyskał wiele patentów. Pracę w IBM rozpoczął jako starszy inżynier badawczy w 1941 roku i wkrótce stał się kierownikiem działu badań wyszukiwania informacji.
Jego wejście w tematykę dokumentacji i informacji rozpoczęło się gdy rozwiązał problem wyszukiwania związków chemicznych zapisanych kodem. Problem rozwiązał z użyciem kart perforowanych.
Luhn wymyślił ideę cyfry kontrolnej i opatentował (zgłoszony w 1954, a przyznany w 1960) mechaniczny kalkulator do obliczenia lub sprawdzenia cyfry kontrolnej. Patrz patent Luhna.
Jeden z jego pomysłów, indeksowanie tekstów, stał się podstawą współczesnych metod wyszukiwania informacji. To co robi teraz Google było 50 lat temu wymyślone przez Luhna.

Poniżej podajemy zmodyfikowany dla celów kart kredytowych opis algorytmu Luhna:
jeśli numer karty jest krótszy od 16 cyfr to przed numerem dopisujemy zera,
kolejne cyfry numeru mnożymy przez współczynniki wagowe,
wagi wynoszą kolejno 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
sumujemy wszystkie cyfry otrzymanego wyniku,
numer karty jest prawidłowy jeśli ostatnia cyfra wyniku sumowania jest równa 0.

  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:

  • Organizacja Długosc numeru 1-sza cyfra 2-ga cyfra 4 pierwsze cyfry
    Visa 16, 13   4   –   –
    MasterCard   16   5 1,2,3,4,5   –
    American Express   15   3 4,7   –
    Diners Club
    Carte Blanche
      14   3 0,6,8   –
    JCB   16   –   – 3088,3096,3112,3158,3337,3528

Inne szczegóły można znaleźć w Internecie: