Algorytmy

NIP i REGON

  • 2009-05-21 00:32
  • 8 komentarzy
  • 14824 odsłony
  • Oceń ten tekst jako pierwszy
W artykule dotyczącym PESELA http://http://4programmers.net/view.php?id=442 opisałem jak można sprawdzić poprawność numeru. Czy jest prawdziwy, czy nie? Sprawa NIPU i REGONU wygląda praktycznie tak samo. Różnica polega tylko na zmianie numerów wag (zobacz artykuł o numerze identyfikacyjnym) oraz/i nie stosuje się odejmowania od 10 a liczbą do dzielenia modulo stosuje się 11.
NIP to numer 10-cio cyfrowy odpowiednio dzielony myślnikami (np. 768-000-24-66). Zaś numer REGON to składania cyfr 7-mio, lub 9-cio cyfrowej kombinacji cyfr. Nie chciałbym tutaj opisywać, do czego służą te numery, gdyż wydaje mi się to zbędne. Jeżeli ktoś już zaczął pracować i jest zarejestrowany to pewnie wie co to numer NIP. Zaś posiadaczą własnej działalności, numer REGON jest nie obcy.
Dla numeru NIP stosuje się tablicę wag o następującej składnie: 6,5,7,2,3,4,5,6,7;
Dla REGONU 7-mio cyfrowego: 2,3,4,5,6,7;
Dla REGONU 9-cio cyfrowego: 8,9,2,3,4,5,6,7.
Wszystkie wyniki, jak wspomniałem, dzielimy modulo przez 11.

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 kontrolnej - ostatnia cyfra numeru NIP, czyli 6)
          -----------------------------------
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

teraz dzielimy modulo przez wspomniane 11:
204 mod 11 = 6

Wynik taki sam jak suma kontrolna, a więc numer jest prawidłowy.


Jeżeli ktoś by miał ochotę dodać moduł sprawdzania poprawności numerów NIP i REGON (nawiasem mówiąc wykonal to brodny do art. PESEL) to proszę bardzo. Nie robię tego osobiście, gdyż wydaje mi się, że stworzenie takiego algorytmu to nic wielkiego, to po pierwsze a po drugie chyba nie chce mi się też.

NA MARGINESIE:

A już niebawem.
Sprawdzanie poprawności:
Numery banków i kard kredytowych.

Ale zanim to nastąpi najpierw wrzucę artykuł dotyczący plików PE - 32 bitowych plików wykonywalnych. Artykuł będzie opisywał budowę tych plików, w tym jak odróżnić w nich bibliotekę dll a program (nie mówiąc o rozszerzeniu). I jak można podczepić własny kod programu pod taki plik - wirus?

8 komentarzy

knowak 2016-02-25 12:16

Siema, tu znalazlem fajny generator:
http://generatory.it/

EroSanin 2015-09-21 10:48

Bogdan, mod = reszta z dzielenia :)

Brak avatara
Bogdan 2014-04-27 12:38

Co to jest ten mod? Jak podzielę 204 przez 11 wychodzi 18,5 a nie 6. Żeby było 6 cyfra kontr.) należy 204 podzielić przez 34.

Drajwer 2009-05-21 09:41

Nie rozgryziesz kart doladowan z komorki, bo po pierwsze zrobienie ich wg jakiegos wzoru bylo by kiepskim pomyslem a po drugie sa sprawdzane po stronie operatora. Jak dla mnie sa generowane losowo i trzymane na serwerach operatora.

madmike 2009-05-21 03:05

<quote=Darkon>Przydaloby sie jeszcze rozgryzc numery z kart doladowan na komorki ;D</quote> Czyli kraść???

Darkon 2006-05-27 15:37

Przydaloby sie jeszcze rozgryzc numery z kart doladowan na komorki ;D

limak 2004-04-08 14:04

Fajny artykuł. Zapomniałeś tylko dodca ze jesli modulo wyjdzie 10 to suma kontrolna wtedy równa sie 0 =) . Czekam na arta dotyczącego poprawności kart bankomatowych :)

brodny 2004-10-12 22:51

Miło, że o mnie wspomniałeś :) Fakt, algorytm nic wielkiego, ale zawsze można takiego gotowca łatwo wrzucić do jakiejś aplikacji :) W końcu tyle się mówi o wielokrotnym wykorzystywaniu raz napisanego kodu :) Więc to może być chyba także taki prosty kodzik (dla jednego prosty, dla innego - niekoniecznie) :) Jak mi się kiedyś zachce, to może napiszę algorytmy dla pozostałych numerów na podstawie Twoich artów i wrzucę do jednego archiwum? :)