Problema validacion pbkdf2_sha256 hash

67 views
Skip to first unread message

Mentor Carranza Carranza

unread,
Apr 5, 2020, 2:21:41 PM4/5/20
to Django developers (Contributions to Django itself)
Buen dia con todos, 


Tengo un problema, y no se como resolverlo.

1.- Actualmente estoy utilizando la funcion MAKE_PASSWORD para generar claves ingresadas por el usuario 
2.- El formato que genera es algo como esto:  hash  ---->     pbkdf2_sha256$180000$WrkfqaywlilB$BayvAJ9Rb4drbhIdX5uryVKl12wSEjzaXUeIMWbqIf4=
3.- Las clases de DJANGO que autentican el usuario, leen y validan perfectamente estas claves que yo estoy generando con mis propios programas y pantallas, si utilizo un metodo diferente la autenticacion que hace DJANGO no detecta el formato por lo tanto no valida y no se puede ingresar.
4.- Si creo un superusuario a traves de: Python manage.py  createsuperuser se genera una clave con el mismo formato que el de MAKE_PASSWORD   
5.- Tengo una pantalla (interface) propia en donde permito que el usuario cambie su contraseña ...en esta pantalla valido con javascript cosas basicas de ingreso de datos y en un programa tipo PY valido que esta clave NO SEA IGUAL a la que esta almacenada en la BASE DE DATOS,  para ello intento utilizar la funcion :
           
           

           pbkdf2_sha256.verify("Clave_ingresada_usuario", hash)

           ValueError: not a valid pbkdf2_sha256 hash

 5.- Que metodo debo utilizar para validar la clave ingresada y compararla con la almacenada en la base de datos?

Agradezco mucho a las personas y colegas que me guien en como resolver este pequeño problema. Gracias




Validacionclaves.png





Mentor Carranza
Quito-Ecuador

Validacionclaves.png

Rogers Andres Diaz Beltran

unread,
Apr 5, 2020, 5:02:27 PM4/5/20
to django-d...@googlegroups.com
Buena la tardes, mmmm entiendo, debes tener en cuenta que el hash generado por django es una sola vía, es decir, desde el hash no podrás recuperar el texto plano de la contraseña. Lo que podes hacer es generar el nuevo password y verificarlo contra el password almacenado en la tabla users, si ambos hashes son idénticos podés estar seguro que ambos textos planos también lo son. 

Saludos!

--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/ff3c363d-0a29-41f2-90ac-0ebfbe797efe%40googlegroups.com.

Rogers Andres Diaz Beltran

unread,
Apr 5, 2020, 5:02:30 PM4/5/20
to django-d...@googlegroups.com
O directamente usar la función check_password

Mentor Carranza Carranza

unread,
Apr 5, 2020, 7:04:03 PM4/5/20
to Django developers (Contributions to Django itself)
Gracias Rogers por tu pronta respuesta...revisare el tema de Check_password ya que la opcion de comparar entre hash parecería que no aplica ya que el hash nuevo generado es seguro que va a ser uno diferente al ya almacenado aun siendo la misma clave. La pregunta concreta sería que funcion utiliza djangointernamente para comparar claves...esa es la que yo necesitaria...
Saludos y nuevamente gracias...voy a revisar.....si alguien tiene un ejemplo concreto le agradeceria.....
To unsubscribe from this group and stop receiving emails from it, send an email to django-d...@googlegroups.com.

Rogers Andres Diaz Beltran

unread,
Apr 5, 2020, 7:14:40 PM4/5/20
to django-d...@googlegroups.com
Buenas tardes, esta es la documentacion del metodo:

def check_password(self, raw_password):
"""
Return a boolean of whether the raw_password was correct. Handles
hashing formats behind the scenes.
"""
def setter(raw_password):
self.set_password(raw_password)
# Password hash upgrades shouldn't be considered password changes.
self._password = None
self.save(update_fields=["password"])
return check_password(raw_password, self.password, setter)
Basicamente te regresa un bool que te indica si los passwords son iguales o no.

Saludos!!

To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/3738e5df-a725-49a2-8adf-79bcd4127541%40googlegroups.com.

Hasnat Jutt

unread,
Apr 6, 2020, 8:30:07 AM4/6/20
to django-d...@googlegroups.com
Hello Beltran,

                   If you want to convert hash to plain text use PBKDF2HMAC function,
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC



--
Regards

Hasnat Aslam
Researcher

Adam Johnson

unread,
Apr 6, 2020, 12:49:52 PM4/6/20
to django-d...@googlegroups.com
¡Hola! (Traducido con Google Translate, inglés al final)

Creo que has encontrado la lista de correo incorrecta para esta publicación. Esta lista de correo es para discutir el desarrollo de Django en sí, no para el soporte con Django. Esto significa la discusión de errores y características en Django, en lugar de en el código que lo usa. Es poco probable que las personas en esta lista respondan a su consulta de soporte con su tiempo y energía limitados.

Para obtener asistencia, siga la página "Obtención de ayuda": https://docs.djangoproject.com/en/3.0/faq/help/

Gracias por su comprensión,

Adán


---

Hi!

I think you've found the wrong mailing list for this post. This mailing list is for discussing the development of Django itself, not for support using Django. This means the discussions of bugs and features in Django itself, rather than in your code using it. People on this list are unlikely to answer your support query with their limited time and energy.

For support, please follow the "Getting Help" page: https://docs.djangoproject.com/en/3.0/faq/help/

Thanks for your understanding,

Adam



--
Adam
Reply all
Reply to author
Forward
0 new messages