Cyfry kontrolne - cd.

Inne numery

W przypadku innych identyfikatorów (ISBN, NIP, REGON, nr konta bankowego) metoda jest taka sama jak dla numeru, zmieniają się tylko wagi oraz czynnik modulo.

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='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)


ciąg dalszy


          Licznik = (od 2 stycznia 2001)
          ostatnie poprawki           zylla  @  wipos.p.lodz.pl

Valid HTML 4.01!