Created
July 4, 2013 10:36
-
-
Save ErikRamses/5926670 to your computer and use it in GitHub Desktop.
autentificador
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python2.7 | |
# enable debugging | |
#El programa es producto de varias recopilaciones de rsa y ejemplos de cgi | |
#URLS: http://blog.hackxcrack.es/2011/11/introduccion-la-criptografia-moderna_09.html | |
#http://code.activestate.com/recipes/572196-rsa/ | |
#http://cic.puj.edu.co/wiki/doku.php?id=materias:laboratorio_de_lenguajes_ii:lableng2:ejemplos1 | |
#http://www.tutorialspoint.com/python/python_cgi_programming.htm | |
from algoritmoRSA import rsa #utilizamos el algoritmo de rsa que ya tenemos | |
import cgi, cgitb #importamos las librerias para cgi | |
import random #importamos random | |
def guardarvalor(archivo, valor): #funcion que guarda un valor en un archivo | |
f1 = open(archivo, "w") #funcion que abre el archivo con permisos de escritura | |
f1.write(str(valor)) #se escribe el archivo como string | |
f1.close() #se cierra el archivo | |
def Abrirllaves(archivo, usuario): #funcion para leer llaves o claves | |
f1 = open(archivo, "r") #Se abre el archivo de solo lectura | |
for element in f1: | |
element = i.split(",") #se separa por comas entre cada valor en i | |
if element[0].lower() == usuario.lower() : #el usuario se pasa a minusculas | |
fl.close() #cerramos archivo | |
return int(element[1]), int(element[2]) #se devuelve el modulo y la llave privada | |
fl.close() | |
return False | |
def cambio(x): | |
return x*3+10; #Se ajusta un cambio en el valor de asegurando que sea impar x. | |
def verificar(usuario, y): #funcion que checa los datos ingresados | |
valororiginal = cargarvalores("valores.dat") | |
if valororiginal == y: #los compara con los valores originales | |
return True #si se cumple retorna verdadero | |
else: | |
return False #si no, retorna falso | |
def cargarvalores(archivo): #Funcion utilizada para guardar valores en un archivo | |
f1 = open(archivo, "r") #abrimos el archivo con sólo lectura | |
valor = f1.read() #se obtiene todo el contenido del archivo | |
f1.close() #cerramos | |
return int(valor) #devuelve el valor entero del archivo | |
if __name__ == '__main__': | |
entrada = cgi.FieldStorage() #hacemos uso del cgi para interactuar con el formulario | |
if entrada.has_key("x") and entrada.has_key("usuario"): #Se verifica que se hayan llenado los campos de texto | |
n, e = Abrirllaves( "usuarios.dat", str(entrada["usuario"].value) ) #Se obtienen las llaves del archivo | |
y = rsa.descifrado(n, e, int(entrada["x"].value)) #se iguala al modulo descifrado | |
print str( verificar(str(entrada["usuario"].value), y) ) #imprimimos el nombre del usuario, dentro del html | |
else: #si no se encuentran entradas | |
x = random.randint(1, 1000) #se generan aleatoriamente | |
guardarvalor("valores.dat", cambio(x)) #se guardan en el archivo valores y se hace un cambio en x para poder usarlo en el algoritmo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment