====== std.validate.luhn ====== Der Luhn-Algorithmus (Hans Peter Luhn, IBM 1954) ist ein einfacher Prüfzifferalgorithmus zur Erkennung von Tippfehlern in Nummernreihen. Er wird bei Kreditkartennummern, IMEI-Nummern (Mobilgeräte) und deutschen Steuer-IDs eingesetzt. Neben der reinen Luhn-Prüfung erkennt die Unit den Kartentyp (Visa, Mastercard, Amex, Discover, Maestro, UnionPay etc.) anhand des Nummernpräfixes. → [[lyx_-_programmiersprache:units:validate|std.validate]] ---- ===== Konstanten ===== ^ Name ^ Wert ^ Kartentyp ^ | ''CARD_UNKNOWN'' | ''0'' | Unbekannt | | ''CARD_VISA'' | ''1'' | Visa | | ''CARD_MASTERCARD'' | ''2'' | Mastercard | | ''CARD_AMEX'' | ''3'' | American Express | | ''CARD_DISCOVER'' | ''4'' | Discover | | ''CARD_DINERS'' | ''5'' | Diners Club | | ''CARD_JCB'' | ''6'' | JCB | | ''CARD_MAESTRO'' | ''7'' | Maestro | | ''CARD_UNIONPAY'' | ''8'' | UnionPay | ---- ===== Verwendung ===== import std.validate.luhn; // Kreditkarte validieren var cc: pchar := "4532015112830366"; if (CreditCardValidate(cc) = 0) { var typ: int64 := CreditCardType(cc); log_info(CreditCardTypeName(typ)); // "Visa" log_info(CreditCardFormat(cc)); // "4532 0151 1283 0366" log_info(CreditCardMask(cc)); // "XXXX XXXX XXXX 0366" } // Luhn-Algorithmus direkt if (LuhnValidate("79927398713") = 0) { log_info("Luhn OK"); } // IMEI und deutsche Steuer-ID var imeiOk: int64 := IMEIValidate("490154203237518"); var taxOk: int64 := GermanTaxIDValidate("81872495633"); // Testnummer generieren var testVisa: pchar := CreditCardGenerateTest(CARD_VISA); ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''LuhnValidate(number: pchar): int64'' | pub | Nummer per Luhn-Algorithmus validieren; gibt 0 bei Erfolg zurück | | ''LuhnCheckDigit(number: pchar): int64'' | pub | Luhn-Prüfziffer für gegebene Nummer berechnen | | ''CreditCardValidate(number: pchar): int64'' | pub | Kreditkartennummer vollständig validieren (Länge + Luhn) | | ''CreditCardType(number: pchar): int64'' | pub | Kartentyp anhand Nummernpräfix erkennen (CARD_Xxx-Konstante) | | ''CreditCardTypeName(cardType: int64): pchar'' | pub | Kartentyp-Konstante als lesbaren Namen liefern | | ''CreditCardFormat(number: pchar): pchar'' | pub | Kreditkartennummer in Gruppen formatieren (z.B. "4532 0151 …") | | ''CreditCardMask(number: pchar): pchar'' | pub | Kreditkartennummer maskieren, letzte 4 Ziffern sichtbar | | ''CreditCardGenerateTest(cardType: int64): pchar'' | pub | Gültige Testnummer für angegebenen Kartentyp generieren | | ''IMEIValidate(imei: pchar): int64'' | pub | 15-stellige IMEI-Gerätenummer validieren | | ''GermanTaxIDValidate(taxId: pchar): int64'' | pub | Deutsche Steueridentifikationsnummer (11 Stellen) validieren | Letzte Aktualisierung: 2026-05-22