Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Ricardo95 en 25 Enero 2011, 18:11 pm



Título: Generacion de cc en Python[Duda]
Publicado por: Ricardo95 en 25 Enero 2011, 18:11 pm
Andaba haciendo un code para generar los 16 digits de una cc valida e hice este code,pero no me da ninguna salida haber si le ven el fallo.
El algoritmo consiste en multiplicar por 2 las cifras que ocupan por una posicion impar, si es mayor que nueve el resultado restarle dicho numero con los nuevos resultados que obtenemos los sumamos con los numeros de la sposiciones pares y si es multiplo de 10 el resultado es correcto.

Código:
import random

comprobacion=0
while comprobacion%10!=0:
   
   #El número de cifras representa la posicion de la cifra en el numero de la cc
   uno=random.randint(1,9)
   dos=random.randint(1,9)
   tres=random.randint(1,9)
   cuatro=random.randint(1,9)
   cinco=random.randint(1,9)
   seis=random.randint(1,9)
   siete=random.randint(1,9)
   ocho=random.randint(1,9)
   nueve=random.randint(1,9)
   diez=random.randint(1,9)
   once=random.randint(1,9)
   doce=random.randint(1,9)
   trece=random.randint(1,9)
   catorce=random.randint(1,9)
   quince=random.randint(1,9)
   dieciseis=random.randint(1,9)

   unp=uno*2

   if unp>9:
      unp-=9

   dop=tres*2

   if dop>9:
      dop-=9

   trp=cinco*2

   if trp>9:
      trp-=9

   cap=siete*2

   if cap>9:
      cap-=9

   cip=nueve*2

   if cip>9:
      cip-=9

   sep=once*2

   if sep>9:
     sep-=9

   seep=trece*2

   if seep>9:
     seep-=9

   oip=quince*2

   if oip>9:
      oip-=9

   comprobacion=unp+dop+trp+cap+cip+sep+seep+diez+doce+catorce+dieciseis
   if comprobacion%10==0:
      n=[unp,dop,trp,cap,cip,sep,seep,diez,doce,catorce,dieciseis]
      we=''.join(n)
      print we
print "Hecho"


Título: Re: Generacion de cc en Python[Duda]
Publicado por: Karcrack en 25 Enero 2011, 21:53 pm
El algoritmo consiste en multiplicar por 2 las cifras que ocupan por una posicion impar, si es mayor que nueve el resultado restarle dicho numero con los nuevos resultados que obtenemos los sumamos con los numeros de la sposiciones pares y si es multiplo de 10 el resultado es correcto.
Código
  1. from random import randint
  2.  
  3. n=[]
  4. for w in range(1,16):
  5.    i=randint(1,9)
  6.    if w%2:
  7.        i*=2
  8.        if i>9:i-=9
  9.    n+=i,
  10.  
  11. print ''.join(map(str,n))
  12.  
  13. if sum(n)%10:
  14.    print ":)"
  15. else:
  16.    print ":("
  17.  
Tu haces cosas extrañas en tu codigo... pero según tu definición del algoritmo mi codigo funciona perfecto :xD

PD: Hubiese sido mas sencillo entender el algoritmo si usases los signos de puntuación... ya sabes: comas, puntos... etc


Título: Re: Generacion de cc en Python[Duda]
Publicado por: leogtz en 25 Enero 2011, 22:32 pm
Código
  1. from random import randint
  2.  
  3. PD: Hubiese sido mas sencillo entender el algoritmo si usases los signos de puntuación... ya sabes: comas, puntos... etc
  4. [/quote]
  5.  
  6. Como toda gente normal.


Título: Re: Generacion de cc en Python[Duda]
Publicado por: Ricardo95 en 27 Enero 2011, 12:43 pm
Muchas gracias, se muy poco de python intentare etender tu code. Repito gracias