Solo stasera ho scoperto questo bell'algoritmo:
http://it.wikipedia.org/wiki/Formula_di_Luhn
Ho provato con la mia Carta, funziona!
Visto che "la formula è stata studiata per rilevare errori di digitazione", mi sono allora posto le seguenti domande:
a) Se parto da un codice valido e modifico esattamente una cifra, posso ottenere un altro codice valido?
b) La stessa cosa se scambio tra loro due cifre adiacenti.
Formula di Luhn
la formula di luhn in pratica e'
sia $ ~(x_i) $, sequenza di n numeri naturali e $ $m=\lfloor\frac{n}{2}\rfloor $
se n pari
$ $L=\sum_{k=1}^{m}[2x_{2k}\!\!\!\!\mod{9}]+\sum_{k=1}^{m}x_{2k-1} $
se n dispari
$ $L=\sum_{k=1}^{m}[2x_{2k}\!\!\!\!\mod{9}]+\sum_{k=1}^{m+1}x_{2k-1} $
(perdonate la notazione, ma non ricordo quella corretta)
$ ~L\equiv 0 \mod{10} $ indica la validita'
cambiando una cifra per avere di nuovo un valore valido devo variare la sua aggiunta alla somma di 10 e non e' possibile
sia $ ~(x_i) $, sequenza di n numeri naturali e $ $m=\lfloor\frac{n}{2}\rfloor $
se n pari
$ $L=\sum_{k=1}^{m}[2x_{2k}\!\!\!\!\mod{9}]+\sum_{k=1}^{m}x_{2k-1} $
se n dispari
$ $L=\sum_{k=1}^{m}[2x_{2k}\!\!\!\!\mod{9}]+\sum_{k=1}^{m+1}x_{2k-1} $
(perdonate la notazione, ma non ricordo quella corretta)
$ ~L\equiv 0 \mod{10} $ indica la validita'
cambiando una cifra per avere di nuovo un valore valido devo variare la sua aggiunta alla somma di 10 e non e' possibile
impara il [tex]~\LaTeX[/tex] e mettilo da par[tex]\TeX~[/tex]
Software is like sex: it's better when it's free (Linus T.)
membro: Club Nostalgici
Non essere egoista, dona anche tu! http://fpv.hacknight.org/a8.php
Software is like sex: it's better when it's free (Linus T.)
membro: Club Nostalgici
Non essere egoista, dona anche tu! http://fpv.hacknight.org/a8.php
Re: Formula di Luhn
a) visto che la trasformazione è iniettiva, è un po' impossibileEnrico Leon ha scritto:a) Se parto da un codice valido e modifico esattamente una cifra, posso ottenere un altro codice valido?
b) La stessa cosa se scambio tra loro due cifre adiacenti.
b) 09 - 90, ma è l'unica, che la differenza tra ogni cifra e la sua permutazione è diversa per ogni cifra (0 e 9 esclusi: c'è due volte la differenza 0, e nessuna volta la 5)