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.

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