Luhn Algoritme Calculator - Valideer Creditcard & IMEI
Gratis Luhn mod 10 calculator voor creditcard validatie, IMEI controles en ID verificatie. Valideer direct nummers of genereer testgegevens online.
Luhn Algoritme Calculator
Controleer of uw nummer de Luhn mod 10 validatie doorstaat
Documentatie
Wat is het Luhn-algoritme?
Het Luhn-algoritme, ook wel het mod-10-algoritme genoemd, is een formule die controleert of een reeks cijfers een geldig identificatienummer kan zijn. Het wordt gebruikt om typefouten in creditcardnummers, IMEI-nummers van telefoons en andere identificatiecodes op te sporen voordat ze een fout veroorzaken. IBM-ingenieur Hans Peter Luhn beschreef de methode in een patent dat in 1954 werd ingediend.
Het algoritme bewijst niet dat een nummer echt of actief is. Het bevestigt alleen dat de cijfers het verwachte patroon volgen. Een kaartnummer kan de Luhn-controle doorstaan en toch vals, verlopen of niet aan een rekening gekoppeld zijn.
Een Luhn-controlesom berekenen
De controle wordt uitgevoerd op de cijfers van een nummer, gelezen van rechts naar links.
- Begin met het op één na laatste cijfer en verdubbel vervolgens elk tweede cijfer.
- Als het verdubbelen van een cijfer een getal groter dan 9 oplevert, trek je er 9 van af. (Dit is hetzelfde als de twee cijfers van het resultaat bij elkaar optellen: 16 wordt dus 1 + 6 = 7, of, equivalent, 16 − 9 = 7.)
- Tel alle cijfers bij elkaar op: de verdubbelde cijfers (na de aanpassing) en de cijfers die ongewijzigd zijn gebleven.
- Als de totale som deelbaar is door 10, is het nummer geldig. Zo niet, dan is het ongeldig.
Wanneer een bedrijf nieuwe identificatienummers uitgeeft, gebruikt het dezelfde stappen in omgekeerde volgorde. Het neemt alle cijfers behalve het laatste, voert de controle uit en kiest vervolgens het laatste controlecijfer zodat het totaal deelbaar is door 10.
Uitgewerkt voorbeeld: een kaartnummer valideren
Neem het testnummer 4532015112830366.
- Cijfers van rechts naar links: 6, 6, 3, 0, 3, 8, 2, 1, 1, 5, 1, 0, 2, 3, 5, 4
- Verdubbel elk tweede cijfer: 6, 12, 3, 0, 3, 16, 2, 2, 1, 10, 1, 0, 2, 6, 5, 8
- Trek 9 af van elk resultaat groter dan 9: 6, 3, 3, 0, 3, 7, 2, 2, 1, 1, 1, 0, 2, 6, 5, 8
- Tel ze op: 6+3+3+0+3+7+2+2+1+1+1+0+2+6+5+8 = 50
- 50 is deelbaar door 10, dus het nummer is geldig.
Uitgewerkt voorbeeld: een ongeldig nummer
Neem 490154203237517, een getal van 15 cijfers in het formaat dat voor IMEI-nummers wordt gebruikt.
Als je dezelfde stappen uitvoert, krijg je een som van 59. Omdat 59 niet deelbaar is door 10, is dit nummer ongeldig.
Om er een geldig nummer van te maken, hoeft alleen het laatste cijfer te veranderen. Door elk mogelijk laatste cijfer te testen, blijkt dat een laatste cijfer van 8 de som op 60 brengt, die deelbaar is door 10. Daarom is 490154203237518 een geldig Luhn-nummer, terwijl elk ander laatste cijfer van 0 tot 9 (behalve 8) een ongeldig nummer oplevert.
Deze calculator gebruiken
De calculator heeft twee modi, die je kiest met de actieknoppen.
Valideren controleert een nummer terwijl het wordt ingevoerd. Je hoeft geen knop in te drukken. Het resultaat verschijnt zodra het veld cijfers bevat, en een stapsgewijze uitsplitsing eronder vermeldt elk cijfer, de waarde die het na verdubbeling en terugbrengen tot één cijfer bijdraagt, en de totale som.
Genereren maakt een nummer dat de controle doorstaat. Cijfers die al in het veld staan, blijven behouden als begin van het nieuwe nummer. De calculator vult de rest aan met willekeurige cijfers en voegt het controlecijfer toe. Het resultaat is 16 cijfers lang, de lengte van een typisch betaalkaartnummer, tenzij de ingevoerde cijfers al 16 of meer cijfers bevatten; in dat geval is het resultaat één cijfer langer dan wat was ingevoerd.
Spaties, streepjes en punten in de invoer worden genegeerd. Zo worden "4532 0151 1283 0366" en "4532-0151-1283-0366" hetzelfde gelezen als de losse cijfers. Elk ander teken, zoals een letter, wordt geweigerd met een foutmelding.
Waar wordt het Luhn-algoritme gebruikt?
- Betaalkaarten. Visa, Mastercard, American Express en andere netwerken maken hun kaartnummers zo dat het volledige nummer de Luhn-controle doorstaat. Betaalformulieren kunnen hiermee een verkeerd ingevoerd cijfer opsporen voordat ze contact opnemen met een betalingsverwerker.
- IMEI-nummers. De aan telefoons en andere mobiele apparaten toegewezen identificatie van 15 cijfers bevat een Luhn-controlecijfer.
- Canadese socialeverzekeringsnummers. Het SIN van 9 cijfers gebruikt dezelfde controle.
- Amerikaans National Provider Identifier (NPI). Zorgverleners in de Verenigde Staten krijgen een NPI van 10 cijfers, gevalideerd met een op Luhn gebaseerde controle.
Wat het Luhn-algoritme niet detecteert
Het algoritme detecteert altijd één verkeerd ingevoerd cijfer, ongeacht welk cijfer het is of waar het staat. Het detecteert ook elke verwisseling van aangrenzende cijfers (zoals "39" invoeren in plaats van "93"), behalve één specifiek geval: het verwisselen van een aangrenzende 0 en 9, zoals "09" dat "90" wordt.
Ook drie zogenoemde dubbele fouten worden niet gedetecteerd, waarbij een herhaald paar cijfers wordt vervangen door een ander herhaald paar: 22 gelezen als 55, 33 gelezen als 66 en 44 gelezen als 77. Omdat deze beperkingen bekend en beperkt zijn, is de Luhn-controle betrouwbaar voor het opsporen van gewone typefouten, maar wordt ze op zichzelf niet beschouwd als een volledig systeem voor foutdetectie.
Luhn is geen beveiligingscontrole
Luhn is ontworpen om onbedoelde invoerfouten te detecteren, niet om fraude te voorkomen. Een nummer dat de controle doorstaat, is alleen wiskundig correct opgebouwd. De daadwerkelijke beveiliging van betalingen berust op andere beveiligingslagen die na de Luhn-controle worden toegevoegd, zoals de CVV-code van de kaart, adresverificatie en 3-D Secure-authenticatie. Luhn is simpelweg de eerste en goedkoopste filter, die vóór die tragere controles wordt uitgevoerd.
Een nummer valideren in 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}
18De controle op lege invoer is belangrijk: een lege tekenreeks heeft een cijfersom van 0 en 0 is
deelbaar door 10. Zonder die controle zou de functie dus helemaal niets aanroepen en een
geldig nummer als resultaat accepteren. Om een controlecijfer te vinden in plaats van een nummer te testen, voer je dezelfde lus
uit over de cijfers vóór het controlecijfer, maar begin je met verdubbelen bij het laatste daarvan;
neem vervolgens (10 - sum % 10) % 10.
Veelgestelde vragen
Waar wordt het Luhn-algoritme voor gebruikt?
Het controleert of een identificatienummer, zoals een creditcardnummer, IMEI-nummer of Canadees SIN, intern consistent is. Het detecteert verkeerd ingevoerde of verwisselde cijfers voordat die een verwerkingsfout veroorzaken.
Hoe nauwkeurig is het Luhn-algoritme bij het detecteren van fouten?
Het detecteert elk afzonderlijk verkeerd ingevoerd cijfer en bijna elk geval waarin twee aangrenzende cijfers zijn verwisseld. De enige verwisseling die het mist, is van 0 en 9 naast elkaar. Ook mist het drie specifieke vervangingen van dubbele cijfers: 22 in plaats van 55, 33 in plaats van 66 en 44 in plaats van 77.
Betekent een geldig Luhn-nummer dat de kaart echt is?
Nee. De controle bevestigt alleen dat de cijfers in het verwachte patroon passen. Ze zegt niets over het bestaan, de actieve status of het saldo van de kaart. Bedrijven voeren daarvoor afzonderlijke controles uit, zoals een CVV-controle.
Kan de Luhn-controle zonder computer worden uitgevoerd?
Ja. Er zijn alleen verdubbeling, aftrekking en optelling voor nodig, dus de controle kan met de hand of met een eenvoudige calculator worden uitgevoerd. Dit maakte deel uit van het oorspronkelijke ontwerp, bedoeld voor het tijdperk van ponskaarten, voordat digitale computers algemeen waren.
Zijn de gegenereerde nummers echte kaartnummers?
Nee. De generator maakt alleen reeksen cijfers die de Luhn-controle doorstaan. Ze zijn bedoeld voor het testen van invoerformulieren. Geen enkele bank heeft ze uitgegeven en ze kunnen nergens voor worden gebruikt.
Waarom heet het het mod-10-algoritme?
Omdat de laatste stap controleert of de som gelijkmatig deelbaar is door 10, wat in de wiskunde wordt geschreven als "sum mod 10 = 0". "Mod" is een afkorting van modulo, de rest die na een deling overblijft.
Wie heeft het Luhn-algoritme uitgevonden?
Hans Peter Luhn, ingenieur bij IBM, beschreef het in een patentaanvraag die in 1954 werd ingediend (toegekend in 1960 als US Patent 2.950.048). Hij is ook bekend vanwege zijn vroege werk aan geautomatiseerde tekstindexering.