Estoy en el proceso de migrar un sitio php con FOSUserBundle a un modelo de usuario Django.
El contenido de app/config/security.yml
:
security:
encoders:
FOSUserBundleModelUserInterface: sha512
Valores de contraseña / sal de una prueba de usuario en el sitio de PHP:
- contraseña:
3EBoIIMrD73n2y+4hMUpCq2lmJ8tHStrBweonQClP+/Jhmaw7ipLbamQJQfB87Acg45sBH3HlgnpKI+QZN7m/Q==
- sal:
2n4fxtazv1us0csgg8s880ck4skcskg
- La contraseña utilizada es
amdpower
He intentado generar el mismo hash con este código:
raw_password = "amdpower"
salt = "2n4fxtazv1us0csgg8s880ck4skcskg"
salted = "%s{%s}" % (raw_password, salt)
digest = hashlib.sha512(salted).digest()
for i in range(5000):
digest = hashlib.sha512(digest).digest()
print base64.b64encode(digest)
>>> wqgbbFZ/IPvwZktbmYz7inffofmT5HbRNf04BQ+w33Jgman8uVYbjWyiKzfp5EIFX2wqYGOb7hRzi5BdZlzDKw==
¿Qué está mal con el código hash que he intentado? ¿Cómo puedo generar el mismo hash?
Actualizar:
Las funciones de PHP son:
FOSUserBundle: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/UserManager.php#L180
Symfony: https://github.com/symfony/symfony/tree/master/src/Symfony/Component/Security/Core/Encoder
Resuelto
raw_password = "amdpower"
salt = "2n4fxtazv1us0csgg8s880ck4skcskg"
salted = "%s{%s}" % (raw_password, salt)
digest = hashlib.sha512(salted).digest()
for i in range(4999):
digest = hashlib.sha512("%s%s" % (digest, salted)).digest()
print base64.b64encode(digest)
>>> 3EBoIIMrD73n2y+4hMUpCq2lmJ8tHStrBweonQClP+/Jhmaw7ipLbamQJQfB87Acg45sBH3HlgnpKI+QZN7m/Q==
Respuestas
0 para la respuesta № 1Por aquí, he recreado el escenario sobre cómo Symfony hash la contraseña.
Ahora se trata de convertirlo a python, y sé que puedes hacerlo, Juan :)