Carattere di controllo Luhn mod N
Con l'alfabeto abcdef, la sequenza abcdef riceve il carattere di controllo e, e il codice protetto diventa abcdefe. Luhn mod N applica la regola classica del raddoppio e della somma in base N, per codici fatti di lettere, esadecimale o un set di caratteri proprio. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- abcdef
- Alfabeto
- abcdef
- Modalità di calcolo
- Compute
- Payload
- abcdef
- Carattere di controllo
- e
- Con cifra di controllo
- abcdefe
Il Luhn classico funziona solo con le cifre 0–9. Gli identificatori reali spesso mescolano lettere, hex, Base36 o un alfabeto proprietario e richiedono comunque un carattere di controllo finale che individui gli errori di battitura. Luhn mod N associa ogni simbolo del Suo alfabeto a un code point, applica la stessa idea di raddoppio e somma da destra a sinistra in base N e restituisce un carattere di controllo di quello stesso alfabeto.
Cos’è Luhn mod N e come estende il Luhn classico
L’algoritmo originale di Hans Peter Luhn protegge le stringhe di cifre alternando un fattore di raddoppio da destra, ripiegando i valori raddoppiati in una singola cifra, sommando e scegliendo una cifra di controllo affinché il numero completo sia congruente a zero modulo dieci. Quella regola sostiene carte di pagamento, code IMEI e molti identificatori nazionali, ma assume che N valga dieci e che ogni carattere sia una cifra decimale.
Luhn mod N mantiene la stessa struttura e consente a N di essere la dimensione di qualsiasi alfabeto ordinato che Lei definisce: ogni carattere mappa a un code point da zero a N meno uno, il ripiegamento diventa la somma delle cifre in base N del fattore per il code point, e il risultato è rimappato a un carattere di quell’alfabeto. Preferisca un N pari quando contano le garanzie classiche di rilevamento; alfabeti dispari producono ancora un carattere deterministico, ma indeboliscono la copertura di sostituzioni e trasposizioni semplici.
Casi d'uso
Controllare colonne di identificatori esportati
Convalidi in batch ogni codice di un CSV partner o di un export di magazzino e isoli le righe il cui carattere di controllo non corrisponde più al valore ricalcolato per il Suo alfabeto.
Domande frequenti
Cos’è un carattere di controllo Luhn mod N?
È un unico carattere finale calcolato con l’algoritmo Luhn generalizzato su un alfabeto di dimensione N, così che gli errori di battitura comuni facciano fallire la convalida della stringa completa.
Cosa succede se text contiene simboli assenti da alphabet?
Le attività di convalida fallite non vengono addebitate.
Lo strumento Luhn mod N è gratuito?
Lo strumento nel browser è gratuito e gira in locale.
Come vengono trasformati i caratteri in numeri?
In base alla posizione nell'alfabeto che lei indica: il primo carattere vale 0, il successivo 1 e così via fino a N meno 1, dove N è la lunghezza dell'alfabeto. Con abcdef, la a vale 0, la f vale 5 e N è 6.
Perché l'alfabeto dovrebbe avere un numero pari di caratteri?
Perché un N pari mantiene la capacità di rilevamento del Luhn classico. Un alfabeto dispari dà comunque un carattere di controllo fisso e ripetibile, ma rileva meno caratteri sbagliati e meno scambi tra vicini.
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/luhn-mod-n \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"abcdef","alphabet":"abcdef"}'const res = await fetch("https://api.kit.forhosting.com/enc/luhn-mod-n", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "abcdef",
"alphabet": "abcdef"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/luhn-mod-n",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "abcdef",
"alphabet": "abcdef"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/luhn-mod-n", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"abcdef","alphabet":"abcdef"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"abcdef","alphabet":"abcdef"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/luhn-mod-n", 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
{
"text": "abcdef",
"alphabet": "abcdef"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.luhn_mod_n",
"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 quel carattere per un payload, oppure convalida una stringa completa che termina già con uno, e fallisce subito se l’ingresso contiene simboli fuori dall’alfabeto così Lei non accetta mai spazzatura in silenzio. 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 valori memorizzati.
Cos’è Luhn mod N e come estende il Luhn classico
Rispetto a Damm (solo cifre, tabella di quasigruppo) e alle cifre di codici a barre legate a layout EAN o ISBN, Luhn mod N è adatto quando i Suoi codici sono già alfanumerici e desidera uno schema condiviso di emissione e convalida. La risposta nomina sempre l’algoritmo luhn_mod_n così log e contratti con i partner registrano quale schema ha protetto il valore.
Come calcolare un carattere di controllo o convalidare una stringa completa
Testo vuoto, alfabeto assente, alfabeti con meno di due caratteri distinti e valori di mode sconosciuti falliscono prima di qualsiasi aritmetica e non vengono addebitati. Fornisca text come payload senza carattere di controllo per la modalità compute (predefinita), e alphabet come insieme ordinato di simboli validi. Il motore associa ogni carattere distinto dell’alfabeto a code point successivi, scorre il payload da destra a sinistra e restituisce check_character più with_check (payload più quel carattere). La modalità validate si aspetta una stringa completa di almeno due caratteri; la risposta riporta valid, il check_character finale, expected_check_character ricalcolato dal prefisso e la sottostringa payload senza l’ultimo carattere così le interfacce mostrano una correzione chiara. Ogni simbolo in text deve comparire in alphabet: se un carattere è fuori, la chiamata fallisce con invalid_input e il messaggio elenca quei simboli affinché Lei corregga l’alfabeto o rimuova il rumore prima di riprovare. Poiché il percorso è parse puro senza orologio, casualità o rete, lo stesso ingresso produce sempre lo stesso JSON sullo strumento gratuito del browser e sull’API. A $0.002 per richiesta riuscita può proteggere import massivi, stampanti di etichette e moduli di onboarding senza un piano personalizzato. Usi le cifre 0123456789 per riprodurre la generazione stile Luhn mod-10 su payload solo numerici; usi 0-9A-Z per codici prodotto stile Base36; usi un insieme interno quando l’inventario vieta già glifi ambigui come O e 0.
Dove i caratteri di controllo Luhn generalizzati si inseriscono nei sistemi reali
Le etichette di magazzino e di asset spesso mescolano lettere e cifre per la lettura ad alta voce; aggiungere un carattere Luhn mod N intercetta scambi adiacenti e sostituzioni semplici prima che una scansione manuale crei la spedizione sbagliata. Chiavi di licenza e codici coupon che già escludono caratteri confusi necessitano ancora di una cifra di integrità economica che i partner reimplementino senza un segreto condiviso; pubblicare l’alfabeto e questo algoritmo basta. Non tratti un controllo superato come prova di autorizzazione o proprietà: dimostra solo che la stringa è ben formata sotto Luhn mod N per quell’alfabeto, lo stesso criterio di onestà di qualsiasi checksum. Programmi di membership e fedeltà che hanno superato gli ID solo numerici possono conservare un’unica via di emissione: generare un payload sequenziale o casuale nell’alfabeto di casa, chiamare compute, memorizzare with_check e convalidare su ogni modulo e file partner. I job di qualità dati ricalcolano expected_check_character per ogni riga di un export e isolano le discrepanze, individuando sia modifiche umane sia bug dei generatori.
Casi di integrazione
Emettere codici alfanumerici di prodotto o asset
Generi un payload nel Suo alfabeto di casa, chiami la modalità compute e memorizzi o stampi with_check così ogni nuovo codice porta un carattere finale Luhn mod N.
Convalidare codici digitati o scansionati in ingresso
Quando un utente o uno scanner invia una stringa completa, chiami la modalità validate e blocchi la ricerca se valid è false, mostrando expected_check_character per correggere un solo errore di battitura.
Domande tecniche
Come calcolo un carattere di controllo con questa API?
Invii un POST con text uguale al payload, alphabet uguale al Suo insieme ordinato di caratteri e mode compute (oppure ometta mode). La risposta include check_character e with_check.
Come convalidare una stringa che ha già un carattere di controllo?
Invii un POST con la stringa completa, lo stesso alphabet e mode validate. La risposta include valid, check_character, expected_check_character e payload senza l’ultimo carattere.