Så använder du kalkylatorn
Skriv in ett nummer utan dess sista siffra, så räknas Luhn-kontrollsiffran fram tillsammans med summan bakom uträkningen. Praktiskt för utvecklare, ekonomiassistenter och alla som någon gång undrat varför vissa siffror vägrar godkännas i ett formulär.
Siffrorna i exemplet
Utgå från de förifyllda siffrorna: Nummer (utan kontrollsiffra) 556 036 080.
Närmare bestämt:
- Luhn-summa: 29
- Antal siffror: 9
Räkneexempel med startvärdet
Numret 556036080 ger kontrollsiffran 1, och det fullständiga numret blir alltså 5560360801. Luhn-summan landar på 29 - och den siffra som gör totalen jämnt delbar med tio är just ettan.
Så räknar algoritmen
Börja från höger och dubbla varannan siffra. Blir resultatet större än nio drar du bort nio - 14 blir alltså 5. Summera sedan alla siffror. Kontrollsiffran är det som saknas upp till närmaste tiotal: är summan 29 blir siffran 1.
Svenska personnummer använder samma metod
Personnumrets sista siffra är en kontrollsiffra beräknad med exakt den här algoritmen på de tio föregående siffrorna. Det är därför en felskriven siffra nästan alltid fastnar direkt i vårdens, bankens eller myndighetens system - felet upptäcks innan det hinner spridas.
Och organisationsnummer Samma sak gäller svenska organisationsnummer: tio siffror där den sista är en Luhn-kontrollsiffra. Det gör att ett felskrivet organisationsnummer i en faktura eller ett avtal går att upptäcka maskinellt, långt innan någon människa hunnit undra varför betalningen inte matchar.
Kortnummer och IMEI
Alla vanliga bankkortsnummer följer Luhn, liksom IMEI-numret i din telefon. Därför kan en betalsida avvisa ett felskrivet kortnummer innan den ens kontaktar banken - en enkel matematisk kontroll som sparar både tid och misslyckade transaktioner.
Vad den fångar - och inte Luhn upptäcker alla fel där en siffra blivit fel och de flesta fall där två intilliggande siffror kastats om. Däremot missar den vissa omkastningar, exempelvis 09 mot 90 - metoden är ett filter, inte ett skyddsnät med hundra procents täckning.
Giltigt är inte detsamma som existerande
Det viktigaste förbehållet: algoritmen säger bara att numret har rätt form. Ett personnummer kan vara matematiskt korrekt utan att tillhöra någon, och ett kortnummer kan passera kontrollen utan att finnas. För verklig kontroll krävs en uppslagning mot rätt register. Formkontroll och verklighetskontroll är två skilda saker.
Nyttan i formulär Bygger du ett formulär är Luhn en av de billigaste valideringarna som finns: några rader kod, ingen extern tjänst, omedelbar återkoppling till användaren. Kombinera den med en kontroll av längden och rimliga datum, så fångas nästan alla slarvfel. Användaren slipper då ett onödigt felmeddelande efter inskickat formulär.
Vanliga misstag
Att dubbla från fel håll - räkningen börjar från höger - att glömma dra bort nio från tvåsiffriga produkter, och att ta med den befintliga kontrollsiffran i underlaget. Alla tre ger ett svar som ser rimligt ut men är fel. Kontrollräkna alltid på ett nummer du redan känner svaret till.
Prova med ett nummer du har
Ta ett organisationsnummer från en faktura, mata in de nio första siffrorna och jämför resultatet med den tionde. Stämmer det har du både verifierat numret och förstått en algoritm som miljarder transaktioner vilar på varje dag. Algoritmen är från 1950-talet och har överlevt varje teknikskifte sedan dess - enkelhet åldras ovanligt bra.