Luhn-algoritm Kalkylator - Validera Kreditkort & IMEI
Gratis Luhn mod 10 kalkylator för kreditkortsvalidering, IMEI-kontroller och ID-verifiering. Validera nummer eller generera testdata direkt online.
Luhn-algoritm-kalkylator
Kontrollera om ditt nummer klarar Luhn mod 10-validering
Dokumentation
Vad är Luhn-algoritmen?
Luhn-algoritmen, även kallad mod 10-algoritmen, är en formel som kontrollerar om en sifferföljd kan vara ett giltigt identifikationsnummer. Den används för att upptäcka skrivfel i kreditkortsnummer, IMEI-nummer i telefoner och andra ID-koder innan de leder till ett fel. IBM-ingenjören Hans Peter Luhn beskrev metoden i ett patent som lämnades in 1954.
Algoritmen bevisar inte att ett nummer är äkta eller aktivt. Den bekräftar bara att siffrorna följer det förväntade mönstret. Ett kortnummer kan klara Luhn-kontrollen och ändå vara falskt, utgånget eller sakna täckning.
Så beräknas en Luhn-kontrollsumma
Kontrollen görs på numrets siffror, lästa från höger till vänster.
- Börja med den näst sista siffran och dubbla varannan siffra.
- Om en dubblerad siffra blir större än 9 subtraherar du 9 från resultatet. (Det är samma sak som att addera resultatets två siffror, så 16 blir 1 + 6 = 7, eller motsvarande 16 − 9 = 7.)
- Addera alla siffror: de dubblerade siffrorna efter justeringen och de siffror som lämnades orörda.
- Om totalsumman är delbar med 10 är numret giltigt. Annars är det ogiltigt.
När ett företag utfärdar nya ID-nummer använder det samma steg i omvänd ordning. Det väljer alla siffror utom den sista, utför kontrollen och väljer sedan den sista kontrollsiffran så att totalsumman blir delbar med 10.
Genomräknat exempel: Validering av ett kortnummer
Ta testnumret 4532015112830366.
- Siffror från höger till vänster: 6, 6, 3, 0, 3, 8, 2, 1, 1, 5, 1, 0, 2, 3, 5, 4
- Dubbla varannan siffra: 6, 12, 3, 0, 3, 16, 2, 2, 1, 10, 1, 0, 2, 6, 5, 8
- Subtrahera 9 från alla resultat över 9: 6, 3, 3, 0, 3, 7, 2, 2, 1, 1, 1, 0, 2, 6, 5, 8
- Addera dem: 6+3+3+0+3+7+2+2+1+1+1+0+2+6+5+8 = 50
- 50 är delbart med 10, så numret är giltigt.
Genomräknat exempel: Ett ogiltigt nummer
Ta 490154203237517, ett 15-siffrigt nummer i det format som IMEI-nummer använder.
Om samma steg utförs blir summan 59. Eftersom 59 inte är delbart med 10 är numret ogiltigt.
För att göra det giltigt behöver bara den sista siffran ändras. När varje möjlig sista siffra testas visar det sig att en slutsiffra på 8 ger summan 60, som är delbar med 10. Därför är 490154203237518 ett giltigt Luhn-nummer, medan alla andra slutsiffror från 0 till 9 (utom 8) ger ett ogiltigt nummer.
Så använder du kalkylatorn
Kalkylatorn har två lägen som väljs med åtgärdsknapparna.
Validera kontrollerar ett nummer medan det skrivs in. Ingen knapptryckning behövs. Resultatet visas så snart fältet innehåller siffror, och en stegvis genomgång under det visar varje siffra, det värde den bidrar med efter dubblering och vikning, samt totalsumman.
Generera skapar ett nummer som klarar kontrollen. Alla siffror som redan finns i fältet behålls som början på det nya numret. Kalkylatorn fyller resten med slumpmässiga siffror och lägger till kontrollsiffran. Resultatet är 16 siffror långt, vilket är längden på ett typiskt betalkortsnummer, såvida de angivna siffrorna inte redan är 16 eller fler; i så fall blir resultatet en siffra längre än det som angavs.
Blanksteg, bindestreck och punkter i inmatningen ignoreras, så "4532 0151 1283 0366" och "4532-0151-1283-0366" läses på samma sätt som de nakna siffrorna. Alla andra tecken, till exempel en bokstav, avvisas med ett felmeddelande.
Var används Luhn-algoritmen?
- Betalkort. Visa, Mastercard, American Express och andra nätverk utformar sina kortnummer så att hela numret klarar Luhn-kontrollen. Kassasystem kan använda detta för att upptäcka en felskriven siffra innan de kontaktar en betalningsförmedlare.
- IMEI-nummer. Den 15-siffriga identifierare som tilldelas telefoner och andra mobila enheter innehåller en Luhn-kontrollsiffra.
- Kanadensiska socialförsäkringsnummer. Det 9-siffriga SIN-numret använder samma kontroll.
- USA:s nationella vårdgivaridentifikator (NPI). Vårdgivare i USA får ett 10-siffrigt NPI-nummer som valideras med en Luhn-baserad kontroll.
Vad Luhn-algoritmen inte upptäcker
Algoritmen upptäcker alltid en enstaka felskriven siffra, oavsett vilken siffra det är eller var den förekommer. Den upptäcker också alla byten av intilliggande siffror, till exempel när "39" skrivs i stället för "93", utom i ett specifikt fall: när en 0 och en 9 bredvid varandra byter plats, till exempel när "09" blir "90".
Den missar också tre ”dubbelparsfel”, där ett upprepat sifferpar ersätts med ett annat upprepat par: 22 läst som 55, 33 läst som 66 och 44 läst som 77. Eftersom dessa luckor är kända och begränsade är Luhn-kontrollen tillförlitlig för att upptäcka vanliga skrivfel, men den betraktas inte som ett fullständigt system för feldetektering på egen hand.
Luhn är inte en säkerhetskontroll
Luhn utformades för att upptäcka oavsiktliga fel vid dataregistrering, inte bedrägerier. Ett nummer som klarar kontrollen är matematiskt korrekt utformat, men inget mer. Verklig betalningssäkerhet bygger på andra lager som läggs till efter Luhn-kontrollen, till exempel kortets CVV-kod, adressverifiering och 3-D Secure-autentisering. Luhn är helt enkelt det första och billigaste filtret, som körs innan de långsammare kontrollerna.
Validera ett nummer i JavaScript
1function isValidLuhn(number) {
2 const digits = number.replace(/\D/g, '').split('').map(Number);
3 if (digits.length === 0) return false;
4
5 let sum = 0;
6 let doubleDigit = false;
7 for (let i = digits.length - 1; i >= 0; i--) {
8 let d = digits[i];
9 if (doubleDigit) {
10 d *= 2;
11 if (d > 9) d -= 9;
12 }
13 sum += d;
14 doubleDigit = !doubleDigit;
15 }
16 return sum % 10 === 0;
17}
18Skyddet mot tom inmatning är viktigt: en tom sträng har siffersumman 0, och 0 är
delbart med 10, så utan skyddet skulle funktionen felaktigt betrakta ingenting alls a
som ett giltigt nummer. För att hitta en kontrollsiffra i stället för att testa en, kör samma loop
över siffrorna före kontrollsiffran, men börja dubblera med den sista av dem,
och beräkna sedan (10 - sum % 10) % 10.
Vanliga frågor
Vad används Luhn-algoritmen till?
Den kontrollerar om ett identifikationsnummer, till exempel ett kreditkortsnummer, ett IMEI-nummer eller ett kanadensiskt SIN-nummer, är internt konsekvent. Den upptäcker felskrivna eller omkastade siffror innan de leder till ett behandlingsfel.
Hur exakt är Luhn-algoritmen när det gäller att upptäcka fel?
Den upptäcker varje enstaka felskriven siffra och nästan alla fall där två intilliggande siffror har bytt plats. Det enda byte den missar är när 0 och 9 står bredvid varandra. Den missar också tre specifika ”dubbelparsbyten”: 22 i stället för 55, 33 i stället för 66 och 44 i stället för 77.
Betyder ett giltigt Luhn-nummer att kortet är äkta?
Nej. Kontrollen bekräftar bara att siffrorna passar det förväntade mönstret. Den säger inget om huruvida kortet finns, är aktivt eller har pengar. Företag använder separata kontroller för detta, till exempel en CVV-kod.
Kan Luhn-kontrollen göras utan dator?
Ja. Den kräver bara dubblering, subtraktion och addition och kan därför göras för hand eller med en enkel kalkylator. Detta var en del av den ursprungliga utformningen, avsedd för hålkortstiden innan digitala datorer blev vanliga.
Är de genererade numren riktiga kortnummer?
Nej. Generatorn skapar bara sifferföljder som klarar Luhn-kontrollen. De är avsedda för att testa inmatningsformulär. Ingen bank har utfärdat dem och de kan inte användas för att betala något.
Varför kallas den mod 10-algoritmen?
Därför att det sista steget kontrollerar om summan är jämnt delbar med 10, vilket i matematiken skrivs som "sum mod 10 = 0". ”Mod” är en förkortning av modulo, den rest som blir kvar efter division.
Vem uppfann Luhn-algoritmen?
Hans Peter Luhn, ingenjör på IBM, beskrev den i en patentansökan som lämnades in 1954 (beviljad 1960 som US-patent 2 950 048). Han är också känd för sitt tidiga arbete med datoriserad textindexering.