Luhn-algoritme Kalkulator - Valider Kredittkortnummer og IMEI
Gratis Luhn mod 10 kalkulator for validering av kredittkort, IMEI-sjekk og ID-verifisering. Valider umiddelbart nummer eller generer testdata på nettet.
Luhn-algoritme kalkulator
Sjekk om nummeret ditt består Luhn mod 10-validering
Dokumentasjon
Hva er Luhn-algoritmen?
Luhn-algoritmen, også kalt mod 10-algoritmen, er en formel som kontrollerer om en sifferstreng kan være et gyldig identifikasjonsnummer. Den brukes til å oppdage skrivefeil i kortnumre, IMEI-numre på telefoner og andre ID-koder før de fører til en feil. IBM-ingeniøren Hans Peter Luhn beskrev metoden i et patent innlevert i 1954.
Algoritmen beviser ikke at et nummer er ekte eller aktivt. Den bekrefter bare at sifrene følger det forventede mønsteret. Et kortnummer kan bestå Luhn-kontrollen og likevel være falskt, utløpt eller uten dekning.
Slik beregnes en Luhn-kontrollsum
Kontrollen utføres på sifrene i et nummer, lest fra høyre mot venstre.
- Start med det andre sifferet fra høyre, og gang deretter annethvert siffer med to.
- Hvis dobling av et siffer gir et tall større enn 9, trekker du 9 fra det. (Dette er det samme som å legge sammen de to sifrene i resultatet, så 16 blir 1 + 6 = 7, eller tilsvarende 16 − 9 = 7.)
- Legg sammen alle sifrene: de doblede sifrene etter justeringen og sifrene som ikke ble endret.
- Hvis totalsummen er delelig med 10, er nummeret gyldig. Hvis ikke, er det ugyldig.
Når en virksomhet utsteder nye ID-numre, bruker den de samme trinnene i omvendt rekkefølge. Den velger alle sifrene unntatt det siste, utfører kontrollen og velger deretter det siste «kontrollsifferet» slik at totalsummen blir delelig med 10.
Kontroll av et kortnummer
Ta testnummeret 4532015112830366.
- Sifre fra høyre mot venstre: 6, 6, 3, 0, 3, 8, 2, 1, 1, 5, 1, 0, 2, 3, 5, 4
- Gang annethvert siffer med to: 6, 12, 3, 0, 3, 16, 2, 2, 1, 10, 1, 0, 2, 6, 5, 8
- Trekk 9 fra alle resultater over 9: 6, 3, 3, 0, 3, 7, 2, 2, 1, 1, 1, 0, 2, 6, 5, 8
- Legg dem sammen: 6+3+3+0+3+7+2+2+1+1+1+0+2+6+5+8 = 50
- 50 er delelig med 10, så nummeret er gyldig.
Et ugyldig nummer
Ta 490154203237517, et nummer med 15 sifre i formatet som brukes for IMEI-numre.
Når de samme trinnene utføres, blir summen 59. Siden 59 ikke er delelig med 10, er dette nummeret ugyldig.
For å gjøre det gyldig trenger bare det siste sifferet å endres. Ved å teste alle mulige siste sifre ser man at et siste siffer på 8 gir summen 60, som er delelig med 10. Dermed er 490154203237518 et gyldig Luhn-nummer, mens alle andre siste sifre fra 0 til 9 (bortsett fra 8) gir et ugyldig nummer.
Slik bruker du denne kalkulatoren
Kalkulatoren har to moduser, som velges med handlingsknappene.
Valider kontrollerer et nummer mens det skrives inn. Ingen knapp trenger å trykkes. Resultatet vises så snart feltet inneholder sifre, og en trinnvis oversikt under viser hvert siffer, verdien det bidrar med etter dobling og sifferreduksjon, samt totalsummen.
Generer lager et nummer som passerer kontrollen. Sifre som allerede finnes i feltet, beholdes som starten på det nye nummeret. Kalkulatoren fyller resten med tilfeldige sifre og legger til kontrollsifferet. Resultatet har 16 sifre, som er lengden på et typisk betalingskortnummer, med mindre sifrene som er oppgitt, er 16 eller flere; i så fall blir resultatet ett siffer lengre enn det som ble oppgitt.
Mellomrom, bindestreker og punktum i inndata ignoreres, så «4532 0151 1283 0366» og «4532-0151-1283-0366» leses på samme måte som de bare sifrene. Alle andre tegn, for eksempel en bokstav, avvises med en feilmelding.
Hvor brukes Luhn-algoritmen?
- Betalingskort. Visa, Mastercard, American Express og andre kortnettverk bygger kortnumrene slik at hele nummeret består Luhn-kontrollen. Betalingsskjemaer kan bruke dette til å oppdage et feiltastet siffer før de kontakter en betalingsformidler.
- IMEI-numre. Den 15-sifrede identifikatoren som tildeles telefoner og andre mobile enheter, inneholder et Luhn-kontrollsiffer.
- Kanadiske personnumre for sosialforsikring. Det 9-sifrede SIN-nummeret bruker den samme kontrollen.
- Amerikansk nasjonalt leverandøridentifikasjonsnummer (NPI). Helsepersonell i USA får et 10-sifret NPI-nummer som valideres med en Luhn-basert kontroll.
Hva Luhn-algoritmen ikke oppdager
Algoritmen oppdager alltid ett enkelt feiltastet siffer, uansett hvilket siffer det er eller hvor det forekommer. Den oppdager også alle ombyttinger av to nabosifre (for eksempel at «39» skrives i stedet for «93»), bortsett fra ett bestemt tilfelle: at et 0 og et 9 ved siden av hverandre byttes om, slik at «09» blir «90».
Den overser også tre «tvillingfeil», der et gjentatt sifferpar erstattes med et annet gjentatt par: 22 lest som 55, 33 lest som 66 og 44 lest som 77. Fordi disse begrensningene er kjente og snevre, er Luhn-kontrollen pålitelig for å oppdage vanlige skrivefeil, men den regnes ikke alene som et komplett system for feildeteksjon.
Luhn er ikke en sikkerhetskontroll
Luhn-algoritmen ble utformet for å oppdage utilsiktede feil ved dataregistrering, ikke svindel. Et nummer som består kontrollen, er matematisk korrekt utformet, men ikke noe mer. Betalingssikkerhet avhenger av andre lag som legges til etter Luhn-kontrollen, for eksempel kortets CVV-kode, adresseverifisering og 3-D Secure-autentisering. Luhn er ganske enkelt det første og billigste filteret, som kjøres før de langsommere kontrollene.
Kontroll av et 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}
18Vakten for tom inndata er viktig: En tom streng har en siffersum på 0, og 0 er
delelig med 10, så funksjonen ville uten denne vakten feilaktig anse en tom streng som
et gyldig nummer. For å finne et kontrollsiffer i stedet for å teste ett, kjører du den samme løkken
over sifrene før kontrollsifferet, men begynner å doble med det siste av dem,
og bruker deretter (10 - sum % 10) % 10.
Ofte stilte spørsmål
Hva brukes Luhn-algoritmen til?
Den kontrollerer om et identifikasjonsnummer, for eksempel et kortnummer, IMEI-nummer eller kanadisk SIN-nummer, er internt konsistent. Den oppdager feiltastede eller ombyttede sifre før de fører til en behandlingsfeil.
Hvor nøyaktig er Luhn-algoritmen når det gjelder å oppdage feil?
Den oppdager alle enkeltstående feiltastede sifre og nesten alle tilfeller der to nabosifre byttes om. Den eneste ombyttingen den ikke oppdager, er når 0 og 9 ved siden av hverandre byttes om. Den overser også tre bestemte «tvilling»-erstatninger: 22 i stedet for 55, 33 i stedet for 66 og 44 i stedet for 77.
Betyr et gyldig Luhn-nummer at kortet er ekte?
Nei. Kontrollen bekrefter bare at sifrene passer til det forventede mønsteret. Den sier ingenting om hvorvidt kortet finnes, er aktivt eller har dekning. Virksomheter legger til separate kontroller, for eksempel en CVV-kode, for dette.
Kan Luhn-kontrollen utføres uten en datamaskin?
Ja. Den krever bare dobling, subtraksjon og addisjon, så den kan utføres for hånd eller med en enkel kalkulator. Dette var en del av den opprinnelige utformingen, beregnet på hullkorttiden før digitale datamaskiner ble vanlige.
Er de genererte numrene ekte kortnumre?
Nei. Generatoren produserer bare sifferstrenger som består Luhn-kontrollen. De er ment for testing av inndatafelt. Ingen bank har utstedt dem, og de kan ikke brukes til å betale for noe.
Hvorfor kalles den mod 10-algoritmen?
Fordi det siste trinnet kontrollerer om summen er jevnt delelig med 10, noe som i matematikk skrives «sum mod 10 = 0». «Mod» er en forkortelse for modulo, resten som står igjen etter divisjon.
Hvem oppfant Luhn-algoritmen?
Hans Peter Luhn, en ingeniør hos IBM, beskrev den i en patentsøknad innlevert i 1954 (innvilget i 1960 som US Patent 2 950 048). Han er også kjent for sitt tidlige arbeid med datastyrt tekstindeksering.