2009-07-08 18 views

risposta

7

Il Luhn algorithm è abbastanza buono per l'industria della carta di credito ...

+0

L'algoritmo di Luhn è troppo debole, prova a scambiare la prima cifra con l'ultima cifra - oops, valida! –

+0

@AlixAxel Può essere vero che lo scambio del primo e dell'ultimo risulterà valido ma l'intera idea di Luhn Algorithm è solo per prevenire/ridurre l'errore di input dell'utente. Significa che se l'utente finale immette un numero di 16 cifre errato del numero di conto del cliente, ha il 10% (più o meno) di possibilità di essere valido. Ma è ancora più accurato convalidare gli altri dettagli come Nome account insieme al numero di account se contiene molti dati nel database. –

+2

@AlixAxel Wiki significato di Luhn Algo o cifra di controllo - progettato per proteggere da errori accidentali, non da attacchi malevoli. –

5

Come RichieHindle sottolinea, l'algoritmo Luhn è abbastanza buono. Rileverà (ma non corregge) alcun errore o trasposizione (tranne una trasposizione di 0 e 9).

Si potrebbe anche considerare l'algoritmo per ISBN check digits, anche se per ISBN vecchio stile, la cifra di controllo è a volte "X", che può essere un problema per voi se si sta utilizzando campi di numeri interi. Il codice ISBN di nuovo stile non sembra avere questo problema. Wikipedia non va per le proprietà teoriche del sistema, ma ricordo a studiare i numeri ISBN nel mio corso di teoria dei codici tempo fa, quindi penso che siano abbastanza bene :-)

+0

+1 per la cifra di controllo ISBN. Questo mi ha portato indietro i ricordi ... –

2

Verhoeff, non c'è niente di meglio IMO.

+0

Perché non c'è niente di meglio? Quali proprietà ha questo algoritmo che altri no? –

2

So che è un po 'tardi (in base alle date di post), ma la prima volta che avevo bisogno di un algoritmo di controllo numero era la scorsa settimana.

Così ho controllato più algoritmi e IMHO la soluzione migliore (solo per cifre) sembra essere il Damm algorithm. È semplice da implementare e rileva la maggior parte degli errori testati (tutti gli errori di una sola cifra e tutti gli errori di trasposizione, quasi tutti gli errori di trasposizione di salto).

Per me c'era un solo problema, dal momento che ho bisogno di calcolare le cifre di controllo non solo dai numeri ma anche dai caratteri. Esistono molti modi per trascrivere i caratteri in numero, ma il rilevamento degli errori sarà sempre inferiore rispetto ai soli numeri utilizzati.

In questi casi è possibile utilizzare la specifica ISO_6346.

Problemi correlati