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

Kontroll / validering av bankgironummer och plusgironummer

Ett bankgironummer består av 7 eller 8 siffror och den sista siffran i numret är en kontrollsiffra som beräknas enligt Luhn-algoritmen, dvs enligt samma princip som beräkning av kontrollsiffran till svenska personnummer och organisationsnummer (som vi tagit upp i tidigare blogginlägg). Ett plusgironummer består av 2 till 8 siffror och även här består den sista siffran av en kontrollsiffra som beräknas enligt Luhn-algoritmen.

Kontroll / validering av bankgironummer och plusgironummer
I vårt klassbibliotek Swedish .NET Classes finns en klass (API) för hantering av svenska bankgironummer och plusgironummer. Klassen kan kontrollera (validera) att ett bankgironummer eller ett plusgironummer är korrekt.

Klassen är baserad på Microsoft .NET Framework och kan användas med programmeringsspråk som C#, C++, Visual Basic mm. Fungerar även med ASP.NET. Mer information om denna klass finns på följande sida:

> SamLogic Number Library – Hanterar bankgironummer och plusgironummer mm

Kontroll / validering av svenska organisationsnummer

I detta blogginlägg gick vi genom personnummer och samordningsnummer. Dessa nummer används för att identifiera enskilda personer. Det finns också ett nummer i Sverige som används för att identifiera företag och andra organisationer. Detta nummer kallas för organisationsnummer och används bland annat för att identifiera ett aktiebolag, handelsbolag, kommanditbolag, ekonomisk förening, ideell förening, stiftelse, trossamfund och en kommun.

Ett organisationsnummer är uppbyggt efter liknande princip som ett personnummer, fast med skillnaden att numret inte innehåller ett födelsedatum. Undantag är en enskild firma där personens personnummer används som ett organisationsnummer.

Kontroll / validering av organisationsnummer
I vårt klassbibliotek Swedish .NET Classes finns en klass (API) för hantering av svenska organisationsnummer. Bland annat kan klassen kontrollera (validera) att ett organisationsnummer är korrekt samt fastställa typ av organisation genom att göra en analys av organisationsnumret. Exempelvis kan klassen fastställa om ett organisationsnummer tillhör ett aktiebolag, ett handelsbolag, ett trossamfund, en ideell förening eller en kommun.

Microsoft .NET Framework
Vår klass / API för hantering av organisationsnummer kan användas i projekt som är baserade på Microsoft .NET Framework, inklusive ASP.NET. Programmeringsspråk som C#, C++ och Visual Basic stöds.

Mer information
Läs mer om klassen som hanterar svenska organisationsnummer här:

> SamLogic Number Library – Hanterar svenska organisationsnummer

Kontroll av svenska personnummer och samordningsnummer

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.

Den sista siffran i ett personnummer och samordningsnummer är en kontrollsiffra som räknas fram från övriga siffror i numret. Genom att kontrollera kontrollsiffran kan man se om ett angivet nummer är korrekt eller felaktigt. Algoritmen som används för denna beräkning brukar kallas för Luhn-algoritmen.

Kontrollera ett personnummer / samordningsnummer med programkod
I vårt klassbibliotek Swedish .NET Classes finns en klass (API) för hantering av svenska personnummer och samordningsnummer. Bland annat kan klassen utföra en kontroll (validering) av kontrollsiffran i ett personnummer och ett samordningsnummer för att se att siffran är korrekt. Klassen kan också fastställa kön (man / kvinna) ur ett nummer samt hämta annan information såsom ålder, födelseår, födelsemånad och födelsedag.

Kan användas med C#, C++, Visual Basic mm
Vår klass / API för hantering av personnummer och samordningsnummer kan användas i programkod som är baserad på ramverket .NET Framework från Microsoft, exempelvis programmeringsspråken C#, C++, Visual Basic, men även andra programmeringsspråk går bra. Kan användas i både lokala program för klientdatorer och på webbsidor skrivna i ASP.NET.

Mer information
Läs mer om denna klass här:

> SamLogic Number Library – Hanterar svenska personnummer & samordningsnummer mm

Postnummer och postorter i Sverige (vårt postnummersystem)

I föregående blogginlägg så skrev vi om SamLogic Softwares API / klass i klassbiblioteket Swedish .NET Classes som hanterar postnummer och postorter i Sverige. På Internet finns det flera bra artiklar med allmän information om hur det svenska postnummersystemet är uppbyggt, om du vill veta mer. Bland annat rekommenderar vi följande två artiklar:

> Postnummersystemet i Sverige (PDF hos Posten AB)
> Postnummer i Sverige (artikel hos Wikipedia)

I dessa artiklar beskrivs bland annat vilken information som kan avläsas från svenska femsiffriga postnummer. Skillnaden mellan en tvåpositionsort, trepositionsort och en fempositionsort beskrivs också liksom hur man ur de första siffrorna ur ett postnummer kan se vid vilken geografisk plats i landet en ort finns.

API för kontroll / validering av svenska postnummer och postorter

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.

Kontroll / validering av postnummer och postort
I vårt klassbibliotek Swedish .NET Classes finns en klass / API för kontroll / validering av postnummer och postorter i Sverige. Denna klass kan även användas för att formatera postnummer samt för att via programkod automatiskt få förslag på postort när ett postnummer anges (kan användas till auto-complete i formulär och dylikt).

Användbar i samband med registrering av kundinformation
Klassen för hantering av svenska postnummer och orter är speciellt användbar i samband med 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.

Du kan också använda denna klass för att skapa programkod som automatiskt föreslår korrekt postort när ett postnummer skrivits in, sk auto-complete. Förutom att kvaliteten på ortnamnen förbättras (mindre felstavningar) så underlättar det även för användaren då han/hon behöver skriva in färre tecken.

Gränssnitt i C#, C++, Visual Basic mm
Vår klass / API för hantering av postnummer och orter kan användas i programkod som är baserad på Microsoft .NET Framework, t.ex programmeringsspråken C#, C++, Visual Basic. Postnummerklassen kan användas i både program som körs lokalt på klientdatorer och på webbsidor / webbapplikationer som är utvecklade i ASP.NET.

Mer information
Läs mer om vår klass / API för hantering av svenska postnummer och postorter på denna sida:

> SamLogic PostalCode Library – Hanterar svenska postnummer och orter

Swedish .NET Classes – Svenskt klassbibliotek för Microsoft .NET Framework

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
Klassbiblioteket kan användas med programmeringsspråken C#, C++ och Visual Basic, samt andra programmeringsspråk som använder sig av .NET. Klasserna kan användas till både 32- och 64-bitars program / applikationer.

Program, webbapplikationer och Windows 8-appar
Swedish .NET Classes är ett mångsidigt bibliotek med klasser och metoder som kan användas vid utveckling av program för klientdatorer eller serverdatorer, vid utveckling av webbapplikationer / webbsidor (i t.ex ASP.NET) samt vid utveckling av Windows 8-appar (för datorer, pekplattor, smarttelefoner mm).

Mer information
Mer information om Swedish .NET Classes finns på produktens hemsida:
> Swedish .NET Classes – Svenskanpassat klassbibliotek

I kommande blogginlägg kommer vi att presentera innehållet i klassbiblioteket Swedish .NET Classes lite närmare.

Windows 8 – Microsofts nya operativsystem för klientdatorer / klientsystem har nu släppts

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.

SamLogic’s program är anpassade för Windows 8
Alla 2012-versioner av våra program är anpassade för att kunna användas i Microsoft Windows 8. Har du en äldre version av våra program och du vill använda programmet i Windows 8-miljö så rekommenderar vi dig att uppgradera till den senaste versionen.

Bland annat har följande av våra produkter anpassats för Windows 8:
> SamLogic MultiMailer 2012
> SamLogic CD-Menu Creator 2012
> SamLogic Visual Installer 2012