Cifra di controllo Damm
Aggiunga una sola cifra a qualsiasi numero e scopra i refusi che si commettono davvero: 572 riceve la cifra di controllo Damm 4 e diventa 5724, e qualsiasi cifra sbagliata o scambio di due cifre vicine fa fallire il controllo. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Solo stringa di cifre
- 572
- Modalità di calcolo
- Compute
- Input
- 572
- Cifra di controllo
- 4
- Con controllo
- 5724
Digitare a mano lunghi codici di conto, numeri di serie o ID di iscrizione è dove si nasconde la maggior parte degli errori di cifra. L'algoritmo della cifra di controllo Damm aggiunge una singola cifra finale in modo che ogni sostituzione di una cifra e ogni trasposizione di cifre adiacenti rompa il checksum—una garanzia più forte dei semplici schemi modulo-10 per gli esatti refusi che le persone commettono.
Cosa intercetta l'algoritmo Damm che i controlli più deboli mancano
Le cifre di controllo esistono perché le persone e le tastiere introducono danni prevedibili: un tasto sbagliato, due cifre vicine scambiate o una cifra inserita o eliminata. Molti schemi quotidiani, incluso il classico algoritmo di Luhn usato sulle carte di pagamento, intercettano la maggior parte degli errori di una cifra e molti scambi adiacenti, ma lasciano invisibili alcune coppie di trasposizione—in particolare 09 contro 90 con Luhn.
H. Michael Damm ha ideato una costruzione diversa: le cifre vengono combinate da sinistra a destra attraverso una tabella fissa 10 per 10 di un quasigruppo totalmente antisimmetrico, partendo da uno zero interinale. Le proprietà algebriche garantiscono che modificare una qualsiasi cifra, o scambiare due cifre adiacenti qualsiasi, non possa lasciare l'interinale finale a zero.
È il vantaggio pratico per numeri di conto, SKU di magazzino, ID di pazienti o biglietti e qualsiasi codice a lunghezza fissa in cui un singolo errore di battitura indirizzerebbe altrimenti il lavoro al record sbagliato. Questo strumento implementa quella tabella standard e la camminata standard da sinistra a destra; non inventa una variante di casa.
Dove le cifre di controllo Damm si inseriscono nei sistemi reali
I programmi di iscrizione e fedeltà coniano ID numerici sequenziali o casuali e hanno bisogno di una cifra finale che gli operatori del call center e le tastiere mobili non corrompano in silenzio. I team di magazzino e logistica stampano codici di cartone o di asset; una trasposizione di due cifre lungo il percorso di uno scanner portatile è comune, e Damm intercetta ogni scambio adiacente che gli schemi più deboli mancano.
Gli uffici sanitari e scolastici che ancora spostano moduli cartacei con numeri di riferimento a più cifre possono validare all'inserimento e mostrare una correzione immediata invece di creare una scheda o un'iscrizione duplicata. I test di integrazione e i job di qualità dei dati ricalcolano la cifra di controllo attesa per ogni riga di un export CSV e segnalano le righe in cui il numero completo memorizzato non corrisponde più, il che intercetta sia le modifiche umane sia i bug di off-by-one nei generatori.
I team di prodotto che già usano Luhn per campi simili a carte possono comunque adottare Damm per identificatori interni dove la più forte proprietà di trasposizione conta più delle convenzioni delle reti di carte. Non tratti un controllo Damm superato come prova di autorizzazione o proprietà—dimostra solo che la stringa di cifre è ben formata secondo questo algoritmo, lo stesso livello di onestà che applica a qualsiasi checksum.
Casi d'uso
Verificare colonne di ID esportate
Validi in blocco ogni ID numerico in un CSV di partner o in un export di magazzino e metta in quarantena le righe la cui cifra di controllo non corrisponde più al valore atteso ricalcolato.
Domande frequenti
Che cos'è una cifra di controllo Damm?
È una singola cifra finale calcolata con l'algoritmo del quasigruppo di H. Michael Damm affinché una qualsiasi cifra errata o una qualsiasi trasposizione adiacente faccia fallire la validazione del numero completo.
Cosa succede con lettere, spazi o trattini?
Fornisca solo cifre 0-9; le attività di validazione fallite non vengono fatturate.
Lo strumento cifra di controllo Damm è gratuito?
Lo strumento del browser è gratuito e funziona in locale.
In cosa si differenzia Damm dalla cifra di controllo Luhn?
Luhn rileva quasi tutti gli errori su una cifra, ma lascia passare alcuni scambi di cifre vicine, come 09 digitato 90. Damm rileva ogni cifra sbagliata e ogni scambio di due cifre adiacenti, il che è utile per numeri di conto o di tessera digitati a mano.
Come verifico un numero che ha già la sua cifra Damm?
Scelga l'opzione di convalida e inserisca il numero completo. Passando l'intero numero, cifra di controllo compresa, nella tabella Damm il risultato deve finire a zero; se non succede, una delle cifre è stata digitata male.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"number": "572"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.damm",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Questa capacità calcola quella cifra per un payload che Lei ha già, oppure valida un numero completo che ne include già una, e respinge l'input non numerico con un errore chiaro invece di ignorare in silenzio la spazzatura. La esegua gratis nel browser o chiami l'API KIT al prezzo pubblicato; entrambi i percorsi usano la stessa aritmetica pura, senza rete e senza numeri memorizzati.
Cosa intercetta l'algoritmo Damm che i controlli più deboli mancano
Grazie alla struttura di quella tabella, dopo aver elaborato il payload la cifra interinale è esattamente la cifra di controllo da aggiungere, e l'elaborazione dell'intero numero inclusa quella cifra termina sempre a zero quando il numero è ben formato. L'output nomina sempre l'algoritmo come damm così i sistemi a valle possono registrare quale schema ha protetto il valore. Rispetto alle cifre di controllo della famiglia dei codici a barre (EAN, UPC, ISBN), Damm non è legato a un layout GTIN al dettaglio—si applica a qualsiasi stringa di sole cifre che Lei scelga come payload, motivo per cui appartiene a un'utilità di codifica anziché a un validatore di codici a barre di prodotto.
Come calcolare una cifra di controllo o validare un numero completo
Invii un campo number che contenga solo caratteri da 0 a 9. Quella forma rende facile mostrare «Lei ha digitato X, atteso Y» in un modulo senza una seconda chiamata. Stringhe vuote, number mancante e valori di mode non validi falliscono prima di qualsiasi ricerca in tabella e non vengono fatturati. Preferisca compute quando conia nuovi ID; preferisca validate quando riceve un ID da un utente, da un file di partner o da un'etichetta scansionata e Le serve un gate booleano prima di cercare il record. Spazi, trattini, lettere, punti decimali e notazione scientifica vengono respinti come input non numerico con invalid_input, così non accetta mai un valore silenziosamente ripulito. La modalità compute è predefinita: il motore percorre il payload attraverso la tabella Damm, restituisce check_digit come stringa di un carattere e restituisce with_check come il payload più quella cifra, così Lei può memorizzare o stampare una singola stringa. La modalità validate si aspetta un numero completo di almeno due cifre (una o più cifre di payload più la cifra di controllo finale). La risposta riporta valid true quando l'intera camminata termina a zero interinale, e include sempre la cifra di controllo finale check_digit, la expected_check_digit ricalcolata dal solo payload e la sottostringa del payload senza l'ultima cifra. Poiché il percorso è puro parsing senza orologio, sorgente casuale o rete, lo stesso input produce sempre lo stesso JSON sullo strumento gratuito del browser e sull'API. A $0.002 per richiesta riuscita può proteggere importazioni in blocco, moduli di onboarding e stampanti di etichette batch senza negoziare un piano personalizzato.
Casi di integrazione
Coniare ID di iscrizione o di conto
Generi un payload sequenziale, chiami la modalità compute e memorizzi with_check così ogni nuovo ID porta una cifra finale Damm prima di essere stampato su tessere o inviato via email ai membri.
Validare codici digitati o scansionati all'inserimento
Quando un utente o uno scanner invia un numero completo, chiami la modalità validate e blocchi la ricerca quando valid è false, mostrando expected_check_digit per correggere un singolo errore di battitura.
Domande tecniche
Come calcolo una cifra di controllo Damm con questa API?
Esegua un POST con number impostato sulle cifre del payload e mode compute (o ometta mode). La risposta include check_digit e with_check (payload più cifra di controllo).
Come valido un numero che ha già una cifra di controllo?
Esegua un POST con la stringa di cifre completa e mode validate. La risposta include valid, check_digit, expected_check_digit e il payload senza l'ultima cifra.