Las contraseñas de Joomla son MD5 hash, pero las contraseñas se salan antes de ser hash. Se almacenan en la base de datos como {hash}:{salt}
esta sal es una cadena aleatoria de 32 caracteres de longitud.
Así que para crear un nuevo hash de la contraseña que haría md5($password.$salt)
EDITAR
Bueno por lo que para la comprobación de una contraseña, por ejemplo un usuario myguy
introduce la contraseña mypassword
, podrá recuperar la fila de la base de datos que tiene nombre de usuario myguy
.
En esta fila, encontrará una contraseña, por ejemplo 4e9e4bcc5752d6f939aedb42408fd3aa:0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT
. Usted dividir el hash de la contraseña y la sal:
$hashparts = preg_split (':' , $dbpassword);
echo $hashparts[0]; //this is the hash 4e9e4bcc5752d6f939aedb42408fd3aa
echo $hashparts[1]; //this is the salt 0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT
ahora calcular el hash usando esta sal y la contraseña myguy
entró
$userhash = md5($userpassword.$hashparts[1]); // This would be 'mypassword' and the salt used in the original hash
Ahora bien, si este $userhash
y $hashparts[0]
son idénticos el usuario ha entrado en el contraseña correcta
pregunta profunda :) y si todavía crees que md5 es la forma normal de almacenar contraseñas, es posible que quieras investigar un poco más sobre ese – mishu
Solo un FYI, MD5 NUNCA se debe usar para contraseñas hash. Nunca. Especialmente sin una sal como en tu ejemplo. – tangrs
Gracias por la información; Pero aquí no estoy a punto de generar un campo de contraseña. – Red