Damm-Prüfziffer
Hängen Sie an jede Zahl eine einzige Ziffer an und fangen Sie die Tippfehler ab, die wirklich passieren: 572 erhält die Damm-Prüfziffer 4 und wird zu 5724, und jede falsche Ziffer oder jeder Dreher zweier Nachbarn lässt die Prüfung scheitern. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Nur Ziffernkette
- 572
- Berechnungsmodus
- Compute
- Eingabe
- 572
- Prüfziffer
- 4
- Mit Prüfziffer
- 5724
Das Abtippen langer Kontocodes, Seriennummern oder Mitgliedsnummern von Hand ist der Ort, an dem sich die meisten Ziffernfehler verstecken. Der Damm-Prüfziffer-Algorithmus hängt eine einzelne abschließende Ziffer an, sodass jede Einzelziffer-Vertauschung und jede benachbarte Ziffernvertauschung die Prüfsumme bricht — eine stärkere Garantie als einfache Modulo-10-Verfahren für genau jene Tippfehler, die Menschen machen. Diese Fähigkeit berechnet diese Ziffer für einen Nutzdatensatz, den Sie bereits haben, oder prüft eine vollständige Zahl, die bereits eine enthält, und sie lehnt nicht-numerische Eingaben mit einem klaren Fehler ab, statt Unbrauchbares stillschweigend zu ignorieren.
Was der Damm-Algorithmus fängt, das schwächere Prüfungen übersehen
Prüfziffern existieren, weil Menschen und Tastaturen vorhersehbare Schäden verursachen: eine falsche Taste, zwei benachbarte vertauschte Ziffern oder eine eingefügte oder ausgelassene Ziffer. Viele Alltagsverfahren, darunter die klassische Luhn-Regel auf Zahlungskarten, fangen die meisten Einzelziffernfehler und viele benachbarte Vertauschungen, lassen aber einige Vertauschungspaare unsichtbar — insbesondere 09 gegenüber 90 unter Luhn. H. Michael Damm entwarf eine andere Konstruktion: Die Ziffern werden von links nach rechts durch eine feste, total antisymmetrische 10-mal-10-Quasigruppentabelle kombiniert, ausgehend von einer Zwischenziffer null.
Aufgrund der Struktur dieser Tabelle ist die Zwischenziffer, nachdem Sie die Nutzdaten verarbeitet haben, genau die Prüfziffer, die Sie anhängen sollten, und die Verarbeitung der vollständigen Zahl einschließlich dieser Ziffer endet bei einer wohlgeformten Zahl stets bei null. Die algebraischen Eigenschaften garantieren, dass das Ändern einer einzelnen Ziffer oder das Vertauschen zweier benachbarter Ziffern die letzte Zwischenziffer nicht bei null belassen kann.
Das ist der praktische Gewinn für Kontonummern, Lager-SKUs, Patienten- oder Ticket-IDs und jeden Code fester Länge, bei dem ein einzelner Tippfehler sonst die Arbeit zum falschen Datensatz leiten würde. Dieses Werkzeug setzt genau diese Standardtabelle und den standardmäßigen Lauf von links nach rechts um; es erfindet keine Hausvariante. Die Ausgabe benennt den Algorithmus stets als damm, sodass nachgelagerte Systeme festhalten können, welches Verfahren den Wert geschützt hat.
Im Vergleich zu Prüfziffern der Barcode-Familie (EAN, UPC, ISBN) ist Damm nicht an ein Einzelhandels-GTIN-Layout gebunden — es gilt für jede reine Ziffernkette, die Sie als Nutzdaten wählen, weshalb es in ein Kodierungs-Werkzeug gehört und nicht in einen Produkt-Barcode-Prüfer.
Wo Damm-Prüfziffern in reale Systeme passen
Mitglieds- und Treueprogramme prägen fortlaufende oder zufällige numerische IDs und benötigen eine abschließende Ziffer, die Callcenter-Mitarbeiter und mobile Tastaturen nicht stillschweigend beschädigen. Lager- und Logistikteams drucken Karton- oder Anlagencodes; eine Vertauschung zweier Ziffern auf einem Handscanner-Pfad ist häufig, und Damm fängt jede benachbarte Vertauschung, die schwächere Verfahren übersehen. Gesundheits- und Bildungsstellen, die noch Papierformulare mit mehrstelligen Referenznummern bewegen, können bei der Eingabe prüfen und eine sofortige Korrektur anzeigen, statt eine doppelte Akte oder Einschreibung anzulegen.
Integrationstests und Datenqualitätsjobs berechnen die erwartete Prüfziffer für jede Zeile eines CSV-Exports neu und markieren Zeilen, in denen die gespeicherte vollständige Zahl nicht mehr passt, was sowohl menschliche Änderungen als auch Off-by-one-Fehler in Generatoren fängt. Produktteams, die für kartenähnliche Felder bereits Luhn nutzen, können dennoch Damm für interne Bezeichner einführen, bei denen die stärkere Vertauschungseigenschaft wichtiger ist als Kartennetzwerk-Konventionen.
Behandeln Sie eine bestandene Damm-Prüfung nicht als Nachweis von Berechtigung oder Eigentum — sie beweist nur, dass die Ziffernkette unter diesem Algorithmus wohlgeformt ist, dieselbe Ehrlichkeitsschwelle, die Sie an jede Prüfsumme anlegen.
Anwendungsfälle
Exportierte ID-Spalten prüfen
Prüfen Sie im Stapel jede numerische ID in einer Partner-CSV oder einem Lagerexport und stellen Sie Zeilen unter Quarantäne, deren Prüfziffer nicht mehr zum neu berechneten erwarteten Wert passt.
Häufige Fragen
Was ist eine Damm-Prüfziffer?
Es ist eine einzelne abschließende Ziffer, berechnet mit dem Quasigruppen-Algorithmus von H. Michael Damm, sodass jede falsche Ziffer oder jede benachbarte Vertauschung die vollständige Zahl bei der Prüfung scheitern lässt.
Was passiert bei Buchstaben, Leerzeichen oder Bindestrichen?
Geben Sie nur Ziffern 0-9 an; fehlgeschlagene Prüfaufgaben werden nicht berechnet.
Worin unterscheidet sich Damm von der Luhn-Prüfziffer?
Luhn erkennt fast alle Fehler in einer einzelnen Ziffer, übersieht aber einige Dreher benachbarter Ziffern, etwa 09 statt 90. Damm erkennt jede falsche Ziffer und jeden Dreher zweier benachbarter Ziffern, was bei von Hand getippten Konto- oder Mitgliedsnummern hilft.
Wie prüfe ich eine Zahl, die ihre Damm-Ziffer schon enthält?
Wählen Sie die Prüfoption und geben Sie die vollständige Zahl ein. Läuft die ganze Zahl samt Prüfziffer durch die Damm-Tabelle, muss am Ende null herauskommen; sonst wurde eine Ziffer falsch getippt.
Ist eine Zahl mit gültiger Damm-Ziffer automatisch echt?
Nein. Die Prüfung zeigt nur, dass die Ziffernfolge nach der Damm-Regel richtig aufgebaut ist. Ob die Nummer je vergeben wurde, wem sie gehört oder ob sie berechtigt ist, sagt sie Ihnen nicht.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/enc/damm \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"572"}'const res = await fetch("https://api.kit.forhosting.com/enc/damm", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "572"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/damm",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "572"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/damm", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"572"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"572"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/damm", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"number": "572"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.damm",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Führen Sie es kostenlos im Browser aus oder rufen Sie die KIT-API zum veröffentlichten Preis auf; beide Wege nutzen dieselbe reine Arithmetik, ohne Netzwerk und ohne gespeicherte Zahlen.
Wie man eine Prüfziffer berechnet oder eine ganze Zahl prüft
Senden Sie ein Feld number, das nur Zeichen 0 bis 9 enthält. Der Modus validate erwartet eine vollständige Zahl von mindestens zwei Ziffern (eine oder mehr Nutzdatenziffern plus die abschließende Prüfziffer). Leere Zeichenketten, fehlendes number und ungültige Modus-Werte scheitern, bevor eine Tabellensuche läuft, und werden nicht berechnet. Bevorzugen Sie compute, wenn Sie neue IDs prägen; bevorzugen Sie validate, wenn Sie eine ID von einem Nutzer, einer Partnerdatei oder einem gescannten Etikett erhalten und ein boolesches Tor vor dem Nachschlagen des Datensatzes benötigen. Leerzeichen, Bindestriche, Buchstaben, Dezimalpunkte und wissenschaftliche Notation werden als nicht-numerische Eingabe mit invalid_input abgelehnt, sodass Sie niemals einen stillschweigend bereinigten Wert akzeptieren. Der Modus compute ist der Standard: Die Engine läuft mit den Nutzdaten durch die Damm-Tabelle, gibt check_digit als einstellige Zeichenkette zurück und liefert with_check als die Nutzdaten plus diese Ziffer, sodass Sie eine einzelne Zeichenkette speichern oder drucken können. Die Antwort meldet valid true, wenn der vollständige Lauf bei Zwischenwert null endet, und enthält stets die abschließende check_digit, die aus den Nutzdaten allein neu berechnete expected_check_digit und die Nutzdaten-Teilzeichenkette ohne die letzte Ziffer. Diese Form macht es leicht, in einem Formular „Sie tippten X, erwartet wurde Y“ ohne einen zweiten Aufruf anzuzeigen. Da der Pfad reines Parsing ohne Uhr, Zufallsquelle oder Netzwerk ist, liefert dieselbe Eingabe stets dasselbe JSON im kostenlosen Browser-Werkzeug und in der API. Zu $0.002 pro erfolgreicher Anfrage können Sie Massenimporte, Anmeldeformulare und Batch-Etikettendrucker schützen, ohne einen Sondertarif auszuhandeln.
Integrationsbeispiele
Mitglieds- oder Konto-IDs prägen
Erzeugen Sie fortlaufende Nutzdaten, rufen Sie den Modus compute auf und speichern Sie with_check, sodass jede neue ID eine abschließende Damm-Ziffer trägt, bevor sie auf Karten gedruckt oder an Mitglieder gemailt wird.
Getippte oder gescannte Codes bei der Eingabe prüfen
Wenn ein Nutzer oder Scanner eine vollständige Zahl übermittelt, rufen Sie den Modus validate auf und blockieren Sie das Nachschlagen, wenn valid false ist, und zeigen Sie expected_check_digit, um einen einzelnen Tippfehler zu korrigieren.
Technische Fragen
Wie berechne ich eine Damm-Prüfziffer mit dieser API?
POST mit number auf die Nutzdatenziffern gesetzt und mode compute (oder mode weglassen). Die Antwort enthält check_digit und with_check (Nutzdaten plus Prüfziffer).
Wie prüfe ich eine Zahl, die bereits eine Prüfziffer hat?
POST mit der vollständigen Ziffernkette und mode validate. Die Antwort enthält valid, check_digit, expected_check_digit und die Nutzdaten ohne die letzte Ziffer.
Ist das Damm-Prüfziffer-Werkzeug kostenlos?
Das Browser-Werkzeug ist kostenlos und läuft lokal. API-Aufrufe nutzen Prepaid-KIT-Guthaben zum veröffentlichten Grundpreis $0.002; ungültige Eingaben werden nie berechnet.