Formula di Luhn

Posted on 7 giugno 2021. Filed under: Senza categoria |

Chi era Luhn? Cosa ha fatto?

Cosa è la formula di Luhn?

Voi sicuramente non lo sapete e non ci penserete, ma la formula di Luhn la usiamo tutti i giorni inconsapevolmente, quando prendiamo in mano una carta da credito per fare un acquisto online o fisicamente in negozio.

Cosa centra una formula matematica con la carta di credito?

Vediamo prima la vita di questo Luhn.

Hans Peter Luhn (1o luglio 1896 – 19 agosto 1964) è stato ricercatore nel campo dell’informatica e della Library & Information Science per IBM,e creatore dell’algoritmo luhn, dell’indicizzazione KWIC (Key W ords In Context) e della diffusione selettiva delle informazioni ("SDI"). Le sue invenzioni hanno trovato applicazioni in diversi settori come l’informatica, l’industria tessile, la linguistica e la scienza dell’informazione. Gli sono stati concessi oltre 80 brevetti.

Luhn nacque a Barmen,in Germania (ora parte di Wuppertal)il 1o luglio 1896. Dopo aver completato la scuola secondaria, Luhn si trasferì in Svizzera per imparare il commercio di stampa in modo da poter entrare nell’azienda di famiglia. La sua carriera nella stampa fu interrotta dal suo servizio come ufficiale di comunicazione nell’esercito tedesco durante la prima guerra mondiale. Dopo la guerra, Luhn entrò nel settore tessile, che alla fine lo portò negli Stati Uniti, dove inventò un indicatore di conteggio dei fili (il Lunometro) ancora sul mercato. Dalla fine degli anni venti ai primi anni quaranta, durante i quali ottenne brevetti per una vasta gamma di invenzioni, Luhn lavorò nel tessile e come consulente ingegneristico indipendente. Nel 1941 entrò a far parte di IBM come ingegnere di ricerca senior e presto divenne direttore della divisione di ricerca sul recupero delle informazioni.

 

La formula di Luhn, anche conosciuta come Modulo 10, è un semplice algoritmo che consente di generare e verificare la validità di vari numeri identificativi. Venne ideata nel 1954 dall’informatico dell’IBM Hans Peter Luhn e brevettata nel 1960. Ora di pubblico dominio ha molteplici applicazioni, ad esempio per i numeri delle carte di credito.

Ogni carta di credito ha un suo numero di carta (es. 0000-1234-5678-9123) dove la prima parte identifica il circuito internazionale (Visa, American Express, Mastercard…) mentre il resto la banca emittente ed il cliente.

Vediamo quindi come scrivere una funziona in VB.NET per la verifica di una carta di credito.

Si sommano tutte le cifre in posizione pari al doppio della somma di quelle in posizione dispari. Si considera quindi il modulo rispetto a 10 (ovvero il resto della divisione per 10) del valore così ottenuto; si determina quindi la cifra di Luhn come segue:

  • se il modulo è 0 (la somma è divisibile per 10) la cifra di controllo sarà 0. Ad esempio se la somma = 60 che diviso per 10 dà resto 0, la cifra di Luhn sarà 0
  • altrimenti la cifra di Luhn sarà la differenza tra 10 ed il modulo. Ad esempio se la somma = 61 che diviso per 10 dà resto 1, la cifra di Luhn sarà 9 (10-1)

La cifra di Luhn è la 16° cifra della carta di credito.

 

Dim NumeroCarta As String = "4716435917330099"
Dim cifraRaddoppiata As Integer
Dim cifraCorrente As Integer
Dim daSommare As Integer
Dim somma As Integer

For i = 1 To Len(NumeroCarta)
    cifraCorrente = CInt(Mid(NumeroCarta, Len(NumeroCarta) + 1 – i, 1))
    If (i Mod 2) <> 0 Then
        cifraRaddoppiata = cifraCorrente * 2
        If cifraRaddoppiata >= 10 Then
            daSommare = 1 + (cifraRaddoppiata Mod 10)  ‘somma le cifre se il numero è > 10
        Else
            daSommare = cifraRaddoppiata
        End If
    Else
        daSommare = cifraCorrente
    End If
    somma = somma + daSommare
Next
If (somma Mod 10) = 0 Then
    Console.Write(NumeroCarta & " è una carta valida")
Else
    Console.Write(NumeroCarta & " è una carta non valida")
End If

 

 

image

 

image

 

Vi dico che la carta di esempio non è mia, quindi non provate a usare quella carta  : – )

 

Alla prossima

Make a Comment

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Liked it here?
Why not try sites on the blogroll...