|
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".
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 5x5=25, 3x5=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 numer
PESEL jest przypisany jakiej� osobie, mo�na tylko zweryfikowa� w samym
systemie PESEL. A do tego systemu maj� on-line 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 i Javascript u�ywanych
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:
https://code.google.com/archive/p/sprawdzacz/
Pokazuje w wersji 0.4  |
W wersji 0.5 ju� poprawiono
|
Program tak�e reaguje na b��dn� dat� w PESELu. Numer 19222900001 ma poprawn� cyfr� kontroln�, ale data 29 lutego 2019 nie istnieje.
|

|
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 "http://www1.mswia.gov.pl/index.php?dzial=72&id=32"
, 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, RODO i SRODO:)
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 od roku 1946 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. http://www.mswia.gov.pl/pl?dzial=&id=6628
W linii nr 4 jest warunek $sex!="M" natomiast na stronie
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�ad vpesel("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�tli if 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:
- "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.
- "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.
- "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.
17 listopada 2008
PESEL Wst�pne za�o�enia koncepcji
W opublikowanej w 1972 roku pracy
PESEL Wst�pne za�o�enia koncepcji,
przedstawiono uzasadnienie budowy samego identyfikatora osobowego, zwanego teraz
numerem PESEL oraz organizacj� cz�ciowo scentralizowanego systemu nadawania tych
identyfikator�w.
W przedstawionej koncepcji zaproponowano by data urodzenia by�a w kolejno�ci dd-mm-rr.
Aktualnie w identyfikatorze jest kolejno�� rr-mm-dd.
Zaproponowany wtedy spos�b kodowania daty urodzenia w XIX, XXI, XXII i XXIII pozosta� bez zmian.
Wst�pnie zaproponowana metoda obliczania cyfry kontrolnej opiera�a si� o inny zestaw
wsp�czynnik�w wagowych (2 1 2 1 2 1 2 1 2 1).
„Osoba urodzona w dniu 5 lipca 2002, p�ci m�skiej, kt�rej przydzielono numer serii
2345 posiada� b�dzie nast�puj�cy identyfikator.
0 5 2 7 0 2 2 3 4 5 ·
� 2 1 2 1 2 1 2 1 2 1
--------------------------------------
0 + 5 + 4 + 7 + 0 + 2 + 4 + 3 + 8 + 5 = 38
10 - 8 = 2
Cyfra kontrolna = 2
Pe�ny identyfikator ma wi�c posta�: 05270223452.”
13 wrze�nia 2022
|