PayPal logo Klik en skærv!
PayPal logo
KODE.porten.dk
Diverse koderier fra en krøllet hjerne...

CPR-tjekker

Skriv de første ni cifre af et CPR-nummer, tryk på knappen og se at det tiende ciffer i nummeret bliver vist korrekt. Århundrede og køn bliver angivet i de runde felter. Eller skriv en fødselsdato, angiv selv århundrede og køn - og skab helt nye numre. Hvert tryk giver et nyt nummer.

Skriv de første ni cifre:
9 cifre Ciffer

Eller skriv en dato:
6 cifre Løbenr. Ciffer

Dreng Pige 1858-99 1900-99 2000-36  

Der er ingen risiko ved at opgive dit CPR-nummer til regnemaskinen. Beregningen bliver foretaget via din egen computer og resultatet bliver ikke oplagret noget andet sted. Er du lidt paranoid, så sluk dit net før du trykker på knapperne ;).

Opbygning og udregning af personnumre
 
Personnummeret består af den seks-cifrede fødselsdag og et fire-cifret løbenummer til sidst. Både det første og det sidste ciffer i løbenummeret er kontrol-cifre. Det første kontrol-ciffer fortæller århundredet efter et sindrigt system - se tabellen her under. Hvis det er under fire, er det helt sikkert fra vor tid. Mellem fem og otte er det enten fra forrige eller fra næste århundrede - men ikke fra årene 37-57. Tallene fire og ni er fra nu- eller fremtid, med bedst plads til nutiden. Det tiende ciffer beregnes ud fra de ni andre.
 
Beregning af CPR-kontrolcifre
Personnumrene beregnes efter et princip, der hedder "modulo 11". Det særlige kontroltal 432765432 bruges sammen med 11-tallet til at beregne det sidste ciffer i løbenummeret med. Det sikrer, at en enkel skrivefejl i et nummer, eller et hurtigt opdigtet nummer, bliver afvist. Hvert enkelt ciffer af personnummerets ni første cifre ganges med hvert af cifrene i 432765432, deles med 11 - og derpå trækkes 11 fra menten.
For eksempel en ældre pige, der er født den 11. november 1911. Personnummeret starter derfor med 111111. De første tre cifre i det fiktive løbenummer kunne være 111 - og det sidste kontrol-ciffer skal så beregnes af fødselsdato og de tre første cifre af løbenummeret. De første ni cifre fører til det tiende:
  Ni CPR-cifre:    1  1  1  1  1  1  1  1  1 
                   x  x  x  x  x  x  x  x  x 
  Kontroltallet:   4  3  2  7  6  5  4  3  2
                   =  =  =  =  =  =  =  =  = 
              36 = 4 +3 +2 +7 +6 +5 +4 +3 +2 
              36 = ( 3 x 11 ) + 3 
                                      11 - 3 = 8
De lodrette gangestykker starter med 1 x 4 = 4 og så videre. Det sammenlagte resultat fra de ni gangestykker er 36, der så forsøges delt med konstanten 11. 36 viser sig at kunne deles med 11 tre gange med 3 i overskud som rest. Kun dette overskud på 3 er interessant og trækkes nu fra konstanten 11. Resultatet er 8, som er dette nummers kontrol-ciffer, og anbringes til sidst i nummeret. Det fulde personnummer bliver derfor 111111-1118.
Hvis "resten" var blevet 1 kan nummeret ikke beregnes, så en af de sidste tre cifre i løbenummeret skulle ændres for at danne et gyldigt nummer. Et 0 som rest giver også 0 som kontrol-ciffer.
 
Denne udregning foretages af et hvert stykke software, der modtager cpr-numre. Det er derfor muligt at "liste" et forkert nummer igennem til systemer, der ikke har krav på det ægte, men alligevel forlanger det. De offentlige registre kan krydstjekke med deres egne optegnelser - men et postordrefirma må nøjes med denne beregning og de accepterer et hvert korrekt konstrueret nummer uden at brokke sig...
 
Det første kontrolciffer bestemmes af århundredet
Kontrolciffer og fødselsår Århundrede
0-00......0-991900 - 1999
1-00......1-991900 - 1999
2-00......2-991900 - 1999
3-00......3-991900 - 1999
4-00......4-362000 - 2036
4-37......4-991937 - 1999
5-00......5-362000 - 2036
5-37......5-57benyttes ikke
5-58......5-991858 - 1899
6-00......6-362000 - 2036
6-37......6-57benyttes ikke
6-58......6-991858 - 1899
7-00......7-362000 - 2036
7-37......7-57benyttes ikke
7-58......7-991858 - 1899
8-00......8-362000 - 2036
8-37......8-57benyttes ikke
8-58......8-991858 - 1899
9-00......9-362000 - 2036
9-37......9-991937 - 1999
 
Eksempel: En dame født 11. november 1911 med løbenummeret 1118. Første ciffer i løbenummeret er kontrol-ciffer her, og skal sammen med årstallet ses som 1-11. Hun skal derfor findes inden for rækkefølgen i skemaets linje 2:
1-00... ...1-99 1900 - 1999
Og så kan det ses, at nummeret er korrekt placeret ved 1900-tallet.
 
Den gamle dame i Gjern
Denne side er for øvrigt ikke det eneste sted, hvor det nemme CPR-nummer 111111-1118 bliver brugt som eksempel. Nummeret har faktisk eksisteret og tilhørte en ældre dame i Gjern. Hun væltede faktisk Gjern Kommunes budgetter nogle år, fordi andre havde anvendt dette nemme CPR-nummer. En del kommuner havde brugt nummeret, når de ikke lige havde fået fat i cpr-nummeret fra en foredragsholder og også mange andre havde fundet det frem.
Et større valuta-spekulationsfirma havde således brugt nummeret til at postere alle udenlandske kunder under, så de kunne passes ind i kartotekerne. Desværre kom firmaet til at udlevere det opdigtede CPR-nummer med de store indtægter til skattevæsnet.
Skattevæsenet troede at den gamle kone fra Gjern var blevet mangemillionær, og Gjern Kommune glædede sig og justerede budgetterne. Ingen spurgte den gamle kone, som faktisk var død og kun blev holdt i live i registrene. Det var rent sjusk og ingen havde gjort noget ulovligt, men skatteyderne i Gjern fik forhøjet trækprocenten i årene efter.
Lignende episoder har udløst retningslinjer for sådanne erstatnings-personnumre, der bevidst skal være opbygget ved en alternativ metode.
 
Droppes kontrolcifrene fra CPR-nummeret?
Med den nuværende opbygning af det 10-cifrede personnummer kan der ud fra hver fødselsdato kun beregnes omkring 540 brugbare personnumre. I 60erne blev der født så mange børn, at der for den 1. januar 1965 kun var fire mulige CPR-numre tilbage. Når der så kommer indvandrere fra de samme godt fyldte årgange til Danmark, kan systemet ikke rumme dem - ikke mindst da disse ofte blot blev proppet ind på årets første dag. For at forberede systemet til en større kapacitet, besluttede CPR-kontoret at benytte en anden metode for løbenummer i de tilfælde, hvor alle beregnede numre er brugt op. Det skaber plads til nogle tusind flere for hver eneste dag. Ændringen var oprindeligt planlagt til først at blive taget i brug op mod år 2036, men allerede fra oktober 2007 blev enkelte numre uden modulo 11 tildelt. Den ny metode indebærer altså ikke, at systemet med kontrolcifre forsvinder helt, men for visse numre bruges en helt anden. De overtallige numre dannes også ud fra en række beregninger - som jeg ikke gider indflette endnu :).
 
Registersamfundet
Staten arbejder mod en fortsat tættere sammenkøring af de offentlige registre. Det er kun muligt fordi Danmark har den mest effektive registrering i verden. Til sammenligning har fx England ingen centrale registre...
 

JavaScript-programmering
JavaScript-programmering giver mulighed for at styre HTML-siderne på en mere aktiv måde, som det ses. Dette var mit første forsøg (1996), hvor jeg valgte denne klassiske opgave med udregning af cpr-nummer som eksempel - og det gav mig en god del bøvl. Bedre kendere af JavaScript vil nok slå sig på lårene over min løsning.


Lær mere om programmet:


©pdateret 2013 - WebHamster@Porten.dk: Tom Vilmer Paamand