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

bankgironummer och plusgironummer. Klassen kan kontrollera (validera) att ett bankgironummer eller ett plusgironummer är korrekt.
I detta
Personnummer är ett nummer som tilldelas personer som folkbokförs i Sverige för att kunna identifiera dem, av bl.a myndigheter. Personer som inte är folkbokförda i Sverige kan få ett samordningsnummer istället för ett personnummer. Ett samordningsnummer är uppbyggt som ett personnummer men med skillnaden att man adderat 60 till födelsedatumet så att det ligger mellan 61 och 91 istället för mellan 01 och 31.
I föregående
Ett svenskt postnummer består av 5 siffror. Ur ett postnummer kan en postort erhållas, så även om en postort normalt brukar anges i samband med en adress så innehåller postnumret egentligen redan denna information. Men för att få en extra kontroll brukar ort alltid anges tillsammans med ett postnummer eftersom denna redundans möjliggör kontroll av att adressinformationen är korrekt.
registrering av kundinformation, exempelvis i kundregister och databaser. Klassen är också användbar när information som skrivs in i webbformulär ska valideras eftersom fel kan upptäckas innan kunden postar sin data. Genom att validera / kontrollera postnummer och postort innan informationen skickas vidare så säkerställer du att kvaliteten på inskriven adressinformation är så hög som möjlig.
Swedish .NET Classes är en ny produkt från SamLogic Software och är ett klassbibliotek (API) baserat på ramverket Microsoft .NET Framework. Klassbiblioteket utökar .NET med en mängd svenskanpassade klasser och metoder för bland annat hantering av svenska personnummer, samordningsnummer, organisationsnummer, bankgironummer, plusgironummer mm. Dessutom ingår en mängd klasser och metoder för hantering av svenska kalendrar / almanackor. Exempelvis hanteras svenska helgdagar, flaggdagar, namnsdagar, veckonummer mm. En mängd generella metoder för kalender, almanacka och datum ingår också liksom kraftfulla funktioner för hantering av svenska postnummer och postorter.
C#, C++ och Visual Basic och andra programmeringsspråk
Förra veckan släpptes nya Windows 8 till försäljning och enligt Microsoft såldes 4 miljoner uppgraderingar enbart de tre första dagarna. Windows 8 är Microsofts senaste operativsystem för klientdatorer / klientsystem och är anpassat för att kunna användas på många olika typer av enheter, såsom bärbara datorer, stationära datorer och pekplattor.