Verification de la carte bancaire : algorithme de Luhn

Partagez votre expérience de PureBasic avec les autres utilisateurs.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Verification de la carte bancaire : algorithme de Luhn

Message par comtois »

ça ne sert à rien , j'ai juste adapté le code pour purebasic par curiosité.

Code : Tout sélectionner

; Verification de la carte bancaire : algorithme de Luhn
OpenConsole()
ok=#True
Print("Type carte , [1] = Visa , [2] = Mastercard =>")
Type = Val(Input())
PrintN("")
Print("Numero de la carte =>")
NumeroCarte.s=Input()

; test mastercard
If Type=2 
  ; test  de longueur
  If Len(NumeroCarte)<>16 
    PrintN("Votre numero de carte n'est pas valable")
    ok=#False
  EndIf
  ; test le préfixe
  If ok=#True 
    prefix=Val(Mid(NumeroCarte,1,2))
    If prefix<>51 And prefix<>52 And prefix<>53 And prefix<>54 And prefix<>55 
      PrintN("Votre numero de carte n'est pas valable")
      ok=#False
    EndIf
  EndIf
EndIf ; fin test master card
; test visa
If Type=1  
  ; test la longueur
  If Len(NumeroCarte)>16 Or Len(NumeroCarte)<13 
    PrintN("Votre numero de carte n'est pas valable")
    ok=#False
  EndIf
  ; test le préfixe
  If ok=#True 
    prefix=Val(Mid(NumeroCarte,1,1))
    If prefix<>4 
      PrintN("Votre numero de carte n'est pas valable")
      ok=#False
    EndIf
  EndIf
EndIf ; fin test visa
            
  ;Algorithme de Luhn
  
If Val(NumeroCarte)  ; si c'est bien un numéro
  If ok=#True  ; si les tests précédents ont été effectués avec succès
    ;debut de l'algo
    totalcarte=0
    increment=0
    For i=Len(NumeroCarte) To -1
      numero=Int(Mid(NumeroCarte,i,1))
      increment+1
      If increment % 2 <> 0  ; nombre impaire
        totalcarte + numero ; ajout normal dans la somme 
      Else ; nombre impaire
        numero=numero*2
        If numero>=10 
          totalcarte=totalcarte+1+numero-10
        Else
          totalcarte=totalcarte+numero
        EndIf
      EndIf
    Next
    ; division du total
    If totalcarte % 10 <>0 
      PrintN("Votre numero de carte n'est pas valable")
      ok=#False
    EndIf
  EndIf
Else
  PrintN("Votre numero de carte n'est pas valable")
  ok=#False
EndIf
; Fin de vérification carte bancaire si ok=true à ce niveau la carte est ok
If ok 
  PrintN("Votre numero de carte est valable")
EndIf
Input()
CloseConsole()
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

Donnes moi ton numéro de CB je vais véfifier si ton algo fonctionne bien :jesors:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

On pourrait presque faire un générateur de faux numéros de carte ?
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

c'est effectivement la base pour générer un numéro , il y a encore quelques informations à connaitre , elles sont dispos un peu partout , mais ce n'était pas mon objectif , en fait je suis tombé là dessus par hasard en cherchant un autre algo .
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Ce qui est malheureux avec le cracking (numérots de série faux compris), c que si tu cherche à cracker un jeu pas connu, tu trouve pas! :-)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

comtois a écrit :c'est effectivement la base pour générer un numéro , il y a encore quelques informations à connaitre , elles sont dispos un peu partout , mais ce n'était pas mon objectif , en fait je suis tombé là dessus par hasard en cherchant un autre algo .
Je sais Comtois, j'aurais peut-être pas du l'écrire....
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Denis a écrit :Je sais Comtois, j'aurais peut-être pas du l'écrire....
Et moi je n'aurais peut-être pas dû poster ce code :)
Répondre