lundi 24 janvier 2011

Validité d'un numero de carte de crédit

Une méthode pour vérifier la validité d'un numero de carte bancaire est exposée sur cette infographie trouvé sur le site :http://www.labnol.org/home/understand-credit-card-numbers/18527/

Cette méthode est PUBLIQUE , il n'y à rien de malicieux dans cet article.

Cet algorithme est utilisé sur la plupart des sites de commerce pour un premier contrôle de validité avant la sollicitation du gestionnaire des paiements

Le principe est simple;: on groupe les chiffres deux à deux en partant de la droite.
On double le premier de la paire et on lui ajoute le second.
On ajoute tous les chiffres. Le numéro de carte est valide si la somme est divisible par 10.
exemple avec un numéro réduit :
93 15 => (9*2 + 3) et (1*2 + 5) = 21 et 7 => 2+1+7 = 10 (c'est un numéro valide de carte bancaire, à compléter avec les autres chiffres) )

exemple complet avec un numéro de carte invalide
4417 1234 5678 9112:

Step 1: 8 4 2 7 2 2 6 4 10 6 14 8 18 1 2 2
Step 2: 8+4+2+7+2+2+6+4+1+0+6+1+4+8+1+8+1+2+2 = 69
Step 3: 69 % 10 != 0





La solution en ruby est :

puts eval( ARGV.join.gsub(/(\d)?(\d)(?=(?:\d\d)*\d$)/) do
"#{$1 + '+' if $1}#{($2.to_i * 2).to_s.split('').join('+')}+"
end ) % 10 == 0 ? "Valid" : "Invalid"

Solution trouvée sur http://www.rubyquiz.com/quiz122.html

Aucun commentaire: