***Como hacer un generador de licencias en python

Iniciado por Arn_dj, 8 Diciembre 2014, 17:13 PM

0 Miembros y 1 Visitante están viendo este tema.

Arn_dj

Estoy trabajando en Windows y presenté algunos problemas para instalar la librería pycrypto pero finalmente pude.
Hice un ejemplo donde empleé el AES(utilicé tu función frase_LargoCorrecto), cifré en base64 y pude exportar a un archivo con una extensión deseada correctamente.
En el proyecto real haré la parte visual utilizando la herramienta QT. El tratamiento de la cadena antes de ser cifrada y las validaciones corren por mi cuenta.
*No aplique el MD5 porque desconozco como hacer el proceso inverso.
*en el AES que modo me recomiendas para usar (ECB, CBC, CFB, OFB o CTR)?
Por alguna razón no puedo publicar imagenes del ejemplo, no obstante el código del ejemplo es este:

__author__ = 'Arn_dj'
from Crypto.Cipher import AES
from Crypto.Hash import MD5
import base64
#************MD5*************
def CifrarMD5(cadena):
    c = MD5.new()
    c.update(cadena)
    return c.hexdigest()

def DescifrarMD5(cadena):
    return base64.b64decode(cadena)

#****************AES****************
def frase_LargoCorrecto(frase):
    largo = 16 #todo en aes debe ser multiplo de 16
    relleno = '\x00' #relleno de algo inconfundible
    return frase + (largo - len(frase) % largo) * relleno

clave = 'licencia'
key=frase_LargoCorrecto(clave)

def CifrarAES(cadena):
    a=AES.new(key)
    return a.encrypt(frase_LargoCorrecto(cadena))

def DescifrarAES(cadena):
    b=AES.new(key)
    return b.decrypt(cadena)

#*****************base64*****************
def CifrarBase64(cadena):
    return base64.b64encode(cadena)

def DescifrarBase64(cadena):
    return base64.b64decode(cadena)

#**************Formato de cadena******************
def CrearCadena(entidad,equipos):
    return 'Nombre de la Entidad:"'+entidad.upper()+'"'+"/Cantidad de Ordenadores:'"+equipos+"'"

#**************Crear Archivo******************
def CrearArchivo(nombre,contenido):
    doc = open("D:/"+nombre+".ext", "w+")
    doc.write(contenido);
    doc.close()

print '''
    *****Cifrado MD5/Aes/Base 64*****
    *********************************
    '''

entidad = raw_input('Nombre de la Entidad : ')
equipos = raw_input('Cantidad de Ordenadores : ')
cadena= CrearCadena(entidad,equipos)
print 'La cadena a cifrar es : %s'% cadena
cifrada=CifrarBase64(CifrarAES(cadena))
desifrada=DescifrarAES(DescifrarBase64(cifrada))
print 'La cadena cifrada es : %s' % cifrada
print 'La cadena descifrada es : %s' % desifrada

CrearArchivo("licencia",cifrada)
exit()
**********************Programa en ejecución*********************
C:\Python27\python.exe I:/demolic/keygen.py

    *****Cifrado MD5/Aes/Base 64*****
    *********************************
   
Nombre de la Entidad : telpromt
Cantidad de Ordenadores : 15
La cadena a cifrar es : Nombre de la Entidad:"TELPROMT"/Cantidad de Ordenadores:'15'
La cadena cifrada es : yCjYpC+5x4y9+VhaxC3cOggbfWJ9mr2Apc+JtngQnrQD+UOmfbTSLHDmKQDoG1+CCpX6J3X0onv/SF+HwnYa2Q==
La cadena descifrada es : Nombre de la Entidad:"TELPROMT"/Cantidad de Ordenadores:'15'