Validering av personnummer / beräkning av kontrollsiffra – hur gör man?

I detta inlägg på vår blogg beskrev vi hur man kan använda en klass i vårt klassbibliotek Swedish .NET Classes för att validera (kontrollera) ett svenskt personnummer. I detta blogginlägg ska vi beskriva lite allmänt hur algoritmen för beräkning av kontrollsiffra och validering av personnummer ser ut.

Luhn-algoritmen används
Den sista siffran i ett personnummer (eller ett samordningsnummer) är en kontrollsiffra. Denna siffra beräknas med hjälp av en algoritm som heter Luhn-algoritmen (ibland även kallad modulus-10-algoritmen). Luhn-algoritmen används också vid beräkning av kontrollsiffror till organisationsnummer, postgironummer och bankgironummer, samt en mängd andra nummer.

Beräkning av kontrollsiffra
Kontrollsiffran beräknas genom att multiplicera övriga siffror i numret växelvis med 2 och 1 (med början till vänster). Den första siffran multipliceras med 2, den andra siffran med 1, den tredje siffran med 2 osv. Därefter adderas alla produkter med varandra. Tvåsiffriga produkter (tex 12) splittras upp i ensiffriga tal (1+2).

Exempel
Nedanstående exempel visar hur man beräknar en kontrollsiffra till det niosiffriga personnumret 811218-987. Först beräknas alla produkter fram:

Därefter summeras alla siffror:

Sedan erhålls kontrollsiffran genom att subtrahera summan från närmast högre tiotal:

I ovanstående exempel blir alltså kontrollsiffran 6. Det kompletta och tiosiffriga personnumret blir då 811218-9876.

Validering av personnummer
Vid validering av personnummer kan man använda sig av två metoder. Man kan antingen plocka ut de 9 första siffrorna i personnumret och beräkna kontrollsiffran enligt ovan och jämföra med den faktiska kontrollsiffran. Eller så kan man använda sig av en annan metod som beskrivs på ett utmärkt sätt i denna Wikipedia-artikel (se sektionen ”Kontroll av nummer”).

Mer information om personnummer
Mer information om ett personnummers uppbyggnad finns på Skatteverkets hemsida:
> Skatteverket – Personnumrets uppbyggnad

Mer information om Luhn-algoritmen
Mer information om Luhn-algoritmen finns på följande Wikipedia-sida. Där finns också ett exempel på hur Luhn-algoritmen kan användas för att på ett enkelt sätt kontrollera att kontrollsiffran i ett personnummer är korrekt:
> Wikipedia – Luhn-algoritmen

Klass som hanterar svenska personnummer
I vårt klassbibliotek Swedish .NET Classes finns en klass som kan användas för kontroll / validering av personnummer via programspråk som C# och Visual Basic. Denna klass innehåller även en mängd andra användbara metoder vid hantering av svenska personnummer. Exempelvis kan den plocka ut kön och ålder ur ett personnummer. Läs mer om klassen här:
> Swedish .NET Classes – PersonalNumber Class

Lämna ett svar