Analiza problemu
PESEL to akronim od nazwy „Powszechny Elektroniczny System Ewidencji Ludności". Składa się zawsze z 11-tu cyfr identyfikujących osobę fizyczną. Cały symbol numeryczny można podzielić na trzy części:
- sześciu pierwszych cyfr określających datę urodzenia,
- pierwsza i druga wskazuje na rok,
- trzecia i czwarta miesiąc oraz stulecie,
- ostatnie dwie dzień,
- cyfr od siódmej do dziesiątej numer serii,
- ostatnia z nich określa płeć,
- ostatniej, cyfry kontrolnej, będącej wartością sumy kontrolnej wygenerowanego numeru.
Rozważmy więc następujący PESEL:
|
102704 |
2832 |
5 |
Pierwsze dwie cyfry przekazują informację, że mamy do czynienia z rokiem 10 konkretnego stulecia. Stulecie odczytujemy z kodowania następnej dwójki:
- ich zapisanie w sposób naturalny wskazuje na lata od 1900 do 1999 roku. Dzieje się tak dla wartości od 01 do 12,
- do numeru miesiąca dodawana jest liczba 20 dla lat od 2000 do 2099. Dzieje się tak dla wartości od 21 do 32,
- do numeru miesiąca dodawana jest liczba 40 dla lat od 2100 do 2199. Dzieje się tak dla wartości od 41 do 52,
- do numeru miesiąca dodawana jest liczba 60 dla lat od 2200 do 2299. Dzieje się tak dla wartości od 61 do 72,
- do numeru miesiąca dodawana jest liczba 80 dla lat od 1800 do 1899. Dzieje się tak dla wartości od 81 do 92.
Co można zauważyć twórcy algorytmu zabezpieczyli się na wiele lat w przód.
Analizując nasz przypadek, można zauważyć, że liczba 27 wskazuje na siódmy miesiąc roku, a ponieważ do niego dodana jest wartość dwadzieścia, to cały numer będzie dotyczył pierwszego stulecia, drugiego tysiąclecia.
Cała część ciągu będzie wskazywać więc na 4 lipca 2010 roku.
Z drugiej sekwencji interesować nas będzie płeć. Zasada tu jest prosta. Cyfry parzyste oznaczają płeć żeńską, nieparzyste męską. Tak oto można wywnioskować, że w naszym przykładzie mamy do czynienia z kobietą.
Na przekór wszystkiemu bardzo ważnym aspektem jest wartość kontrolna. Pozwala ona na sprawdzenie poprawności całego numeru PESEL. Warto analizować podany ciąg, aby nie zwracać użytkownikowi niepoprawnych danych.
Sprawdzanie opiera się na przemnożeniu pierwszych dziesięciu cyfr przez z góry zdefiniowaną wagę, zsumowanie wyników, podzielenie modulo 10 (reszty z dzielenia przez 10) i odjęcie wyniku, także od liczby 10.
Wagi: 1 3 7 9 1 3 7 9 1 3
Przemnożone: (1*1) + (3*0) + (7*2) + (9*7) + (1*0) + (3*4) + (7*2) + (9*8) + (1*3) + (3*2) = 1 + 0 + 14 + 63 + 0 + 12 + 14 + 72 + 3 + 6 = 185
Wynik: 10 - (185 % 10) = 10 - 5 = 5
Cyfra kontrolna: 5
Jeżeli rezultat jest równy jedenastej cyfrze to numer PESEL jest poprawny.
Ładowanie





Takie sprawdzanie jest rzeczą tak banalną, że pisanie na ten temat więcej niż 3 zdań mija się z celem.
Browser: Opera/9.80 (Windows NT 5.1; U; en) Presto/2.6.30 Version/10.60
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:2.0b1) Gecko/20100630 Firefox/4.0b1
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 SUSE/5.0.372.0-1.1 (KHTML, like Gecko) Chrome/5.0.372.0 Safari/533.4
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.1
Zapraszam na http://pesel.olsza.info/
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4
szału nie robicie, ostatnio widze że webhosting ma co raz to gorsze artykuły, czy już nikt nie dba o jakość? Tylko na ilość lecimy?
Browser: Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.2.7) Gecko/20100716 Ubuntu/10.04 (lucid) Firefox/3.6.7
Takich sytuacji, które myślącemu zdroworozsądkowo programiście w życiu nie przyszłyby do głowy są jest znacznie więcej. Zachęcam do przeczytania komentarzy na moim blogu pod wpisem dotyczącym błędów w numerze PESEL.
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4
Browser: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; pl-pl) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8
http://pl.wikipedia.org/wiki/PESEL patrz Cechy specyficzne algorytmu sprawdzania
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4