Comparación de claves encriptadas

87 views
Skip to first unread message

isi_jca

unread,
Jul 22, 2021, 1:34:38 PM7/22/21
to web2py-usuarios

Estimados:

Tengo una tabla de historial de contraseña para cada usuario donde estan las últimas n contraseñas.
Cuando el usuario cambie la contraseña quiero validar que la nueva contraseña no se este reutilizando para lo cual previamente quiere encriptarla y comparar con la tabla del historial.
¿De qué forma o qué metodo usa Web2py para encriptar las contraseñas?

Saludos.

nicolás rosbaco

unread,
Jul 23, 2021, 10:01:11 AM7/23/21
to web2py-...@googlegroups.com
Hola... Se me ocurre que eso no sirve... si tu tabla guarda contraseñas encriptadas creo que son incomparables... porque (no se, pero intuyo) el método de encriptación no es una función biyectiva.... es decir: la inversa no es función... no debería poderse generar la contraseña original...

Me anoto para leer la continuidad de este debate.

Saludos


___________________________________________________________
"En un país colonial las oligarquías son dueñas de los diccionarios" J.W. Cooke


--
Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a web2py-usuari...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/web2py-usuarios/5d5760e0-a05c-441f-9fdb-4488bf5f2cfen%40googlegroups.com.

isi_jca

unread,
Jul 30, 2021, 4:10:53 PM7/30/21
to web2py-usuarios
Estimados:

Encontre la solución a mi problema, se las comparto.

def validar_password(form):
    entered_password = str(form.vars.new_password)
    entered_password = entered_password.strip()
    new_password = request.vars.new_password

   #Recupera las contraseñas almacenadas del usuario 
    rows_password = db(db.thist_password.usrid == auth.user_id).select(db.thist_password.password)

    for j in rows_password:
        #Obtiene el algoritmo, salt y el hash de la contraseña almacenada
        (digest_alg, salt, save_hash) = j.password.split('$')
        stored_password = j.password
        
        #Encrypta usando la misma salt
        new_hash = CRYPT(salt=salt)(new_password)[0]   

        if stored_password ==  new_hash :
            form.errors.new_password = ('No puede repetir las contraseñas')
            break

Saludos.
Reply all
Reply to author
Forward
0 new messages