Accueil   |   Forums   |  Offres d'emplois   |  Contact    |   Mon compte   
samedi 17 mai 2008 Rechercher :
Déposez votre CV gratuitement sur touslesemplois
 
comparer les prix
» Logiciels
» Jeux vidéos
» Matériel Informatique


» ASP.NET
» ASP
» SQL
» PHP
» JAVASCRIPT
» XML
 


» ACTUALITÉ / DIVERS
» DROIT DE L'INTERNET
» INFOS VIRUS
» PATCHS MICROSOFT
» SÉCURITÉ
» BASES DE DONNÉES
» DOWNLOAD .NET
» LOGITHÈQUE
» SERVICES WEB
» Y SONT FOUS !
» .NET
» ASP
» ASP.NET
» JAVA
» PHP
» XML
» LANGAGE C#
» LANGAGE VB.NET
» UNIX / LINUX
» WINDOWS
» EVÈNEMENTS
» GASP
» MICROSOFT
 



Vous êtes ici : Articles ASP > NOTES DE COURS

Validation bancaire : algorithme de Luhn
Voici un algorithme utile quand l'on souhaite, tester sans connexion à un système bancaire, la validité d'un numéro de carte, ou tout du moins limiter les erreurs possibles.


ABONNEZ-VOUS GRATUITEMENT A LA REVUE DE PRESSE "LES Z'ACTUS" ET RECEVEZ CHAQUE JOUR DANS VOTRE BOITE AUX LETTRES LA MEILLEURE INFORMATION DEDIEE AUX WEBMASTERS / DEVELOPPEURS.

Indiquez votre adresse E-mail :

Technologie : ASP 
Date : 28/05/2006   
Auteur : ASP MAGAZINE

Vous pouvez télécharger le fichier algo_luhn.zip qui contient la version Javascript de l'algorithme et une version asp (test 6 types de cartes différents) réalisée par 2Si-Systemes.

Tests préalables

1) test du préfixe de numéro la carte bancaire:

Les préfixes, c'est à dire les premiers chiffres d'une carte bancaire sont fixés et dépendent du type de carte dont l'utilisateur dispose.

2) test sur la longueur du numéro de carte

La longueur est également fixe, et dépend de la même manière du type de carte bancaire.
Voici un petit tableau récapitulatif des deux types de cartes que l'on trouve en France :

TYPE DE CARTE PRÉFIXE LONGUEUR
Visa 4 varie de 13 à 16
Master Card varie de 51 à 55 16

Algorithme de LUHN

Une fois les deux tests précédents effectués,
nous allons opérer sur le numéro de carte un algorithme (algorithme de Luhn), qui va permettre de vérifier la cohérence du numéro entré.

Comment Ca marche

Le principe repose sur une somme qui doit être divisible par 10 (mod 10).
On numérote chaque chiffre de 1 à n en commençant par le dernier (numéro d'ordre).
Dans cette somme tous les chiffres correspondant à un numéro d'ordre paire sont multipliés par deux. Si la multiplication engendre un nombre supérieur à 10 alors on ajoute les deux chiffres (12= 1+2), et on en retient la somme obtenue, dans le cas contraire on retient uniquement le chiffre obtenu. Chacun de ses numéros est ensuite additionné à tous ceux dont le numéro d'ordre est impaire, la somme finale doit être divisible par 10.

Exemple :

Soit le numéro de carte suivant : 4895 1313 (le numéro choisi est fictif)
On obtient le schéma suivant :

8 7 6 5 4 3 2 1
4 8 9 5 1 3 1 3
x2   x2   x2   x2  
8 + 8 1 + 8 + 5 + 2 + 3 + 2 + 3
 

Total Obtenu : 40
Le numéro de carte est correcte

Validation du numéro de Carte Bancaire en ASP:

Paramètre d'entrée :

  • Numerocarte : champs contenant le numéro de la carte
  • Cartetype : 1 = Visa , 2 mastercard ( champs bouton radio)

Paramètre de sortie :

  • si Ok=True, carte acceptée sinon incorrect

<%
' Verification de la carte bancaire : algorothme de Luhn
ok=true
' test mastercard
if request("cartetype")=2 then
' test  de longueur
if len(request("numerocarte"))<>16 then
msg="<font color=red face=arial size=2><P>Erreur : <br>Votre numéro de carte n'est pas valable</font>"
ok=false
end if
' test le préfixe
if ok=true then
prefix=mid(request("numerocarte"),1,2)
if prefix<>51 and prefix<>52 and prefix<>53 and prefix<>54 and prefix<>55 then
msg="<font color=red face=arial size=2><P>Erreur : <br>Votre numéro de carte n'est pas valable</font>"
ok=false
end if
end if
end if ' fin test master card
 ' test visa
if request("cartetype")=1 then
' test la longueur
if len(request("numerocarte"))>16 or len(request("numerocarte"))<13 then
msg="<font color=red face=arial size=2><P>Erreur : <br>Votre numéro de carte n'est pas valable</font>"
ok=false
end if
' test le préfixe
if ok= true then
prefix=mid(request("numerocarte"),1,1)
if prefix<>4 then
msg="<font color=red face=arial size=2><P>Erreur : <br>Votre numéro de carte n'est pas valable</font>"
ok=false
end if
end if
end if ' fin test visa
'Algorithme de Luhn
if isnumeric(request("numerocarte")) then ' si c'est bien un numéro
if ok=true then ' si les tests précédents ont été effectués avec succès
'debut de l'algo
totalcarte=0
increment=0
for i=len(request("numerocarte")) downto 1
numero=cint(mid(request("numerocarte"),i,1))
increment=increment+1
if increment mod 2 <> 0 then ' nombre impaire
totalcarte=totalcarte+numero ' ajout normal dans la somme
else ' nombre impaire
numero=numero*2
if numero>=10 then
totalcarte=totalcarte+1+numero-10
else
totalcarte=totalcarte+numero
end if
end if
next
' division du total
if totalcarte mod 10<>0 then
msg="<font color=red face=arial size=2><P>Erreur : <br>Votre numéro de carte n'est pas valable</font>"
ok=false
end if
end if
else
msg="<font color=red face=arial size=2><P>Erreur : <br>Votre numéro de carte n'est pas valable</font>"
ok=false
end if
' Fin de vérification carte bancaire si ok=true à ce niveau la carte est ok
%>



ASP Serveur - L'hébergement ASP.NET


A RETENIR CETTE SEMAINE
16/05/2008 - Logiciels Microsoft gratuits pour les étudiants
Vous êtes étudiant ? N’attendez pas pour télécharger* gratuitement et utiliser les derniers logiciel ...
16/05/2008 - Lillois, ne manquez pas les Wygdays 2008
Le 22 mai prochain à Lille, vous êtes invité à un événement unique dédié aux développeurs, organisé ...
16/05/2008 - Flash 10 est dans les bacs, Silverlight prend du retard
On est peut-être à un tournant très important de la bataille que se livrent Microsoft et Adobe sur l ...
15/05/2008 - Comment manipuler simplement le contenu d'un fichier WordML ?
Le format WordML (et plus largement OpenXML ) est une grande avancée: il permet de manipuler les doc ...
15/05/2008 - Package d'installation réseau de Windows XP Service Pack 3 pour les informaticiens
Ce package d'installation est destiné à permettre aux informaticiens et aux développeurs de configur ...
15/05/2008 - Mono supporte désormais Windows Forms et Silverlight
Jour de gloire pour le projet Mono. Miguel de Icaza annonce tout d'abord sur son blog la première re ...
14/05/2008 - Deux Services Packs en bêta pour Visual Studio
Microsoft annonce deux Services Packs en version bêta pour Visual Studio 2008 et pour le framework . ...
(c) 1999-2006 ASP MAGAZINE SARL
Partenaires : Codes sources c2i ASP-PHP
Hébergement serveurs dédiés Windows


Hit-Parade