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:
CPR-cifre: 1 1 1 1 1 1 1 1 1
x x x x x x x x x
Kontroltal: 4 3 2 7 6 5 4 3 2
= = = = = = = = =
4 + 3 + 2 + 7 + 6 + 5 + 4 + 3 + 2 = 36
36 = ( 3 x 11 ) + 3
11 - 3 = 8
Resultatet af gangestykket bliver
36, der så deles med 11. Det går op i 36 tre gange med
3 til rest. Til sidst trækkes 11 fra resten
3 - og det bliver
8, som er dette kontrol-ciffer. 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. 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-99 | 1900 - 1999 |
| 1-00... | ...1-99 | 1900 - 1999 |
| 2-00... | ...2-99 | 1900 - 1999 |
| 3-00... | ...3-99 | 1900 - 1999 |
| 4-00... | ...4-36 | 2000 - 2036 |
| 4-37... | ...4-99 | 1937 - 1999 |
| 5-00... | ...5-36 | 2000 - 2036 |
| 5-37... | ...5-57 | benyttes ikke |
| 5-58... | ...5-99 | 1858 - 1899 |
| 6-00... | ...6-36 | 2000 - 2036 |
| 6-37... | ...6-57 | benyttes ikke |
| 6-58... | ...6-99 | 1858 - 1899 |
| 7-00... | ...7-36 | 2000 - 2036 |
| 7-37... | ...7-57 | benyttes ikke |
| 7-58... | ...7-99 | 1858 - 1899 |
| 8-00... | ...8-36 | 2000 - 2036 |
| 8-37... | ...8-57 | benyttes ikke |
| 8-58... | ...8-99 | 1858 - 1899 |
| 9-00... | ...9-36 | 2000 - 2036 |
| 9-37... | ...9-99 | 1937 - 1999 |
Eksempel: En dame født 11. november 19
11 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, som døde for en 5-6 år siden 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 falske CPR-nummer med de store indtægter til skattevæsnet.
Skattevæsen troede omgående, at den gamle kone fra Gjern var blevet millionæ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. For at forberede systemet til en større kapacitet, har CPR-kontoret besluttet 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 er enkelte numre uden modulo 11 nu 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 er mit første forsøg (1996) og jeg har derfor valgt den klassiske opgave med udregning af cpr-nummeret - og det har givet 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: