Codificación MD5
Buenos días a todos, verán, tengo un problema con la codificación de las contraseñas de MyBB. Actualmente, intento hacer un sistema de LogIn, pero pa...

Buenos días a todos, verán, tengo un problema con la codificación de las contraseñas de MyBB. Actualmente, intento hacer un sistema de LogIn, pero para mi web. La idea es usar la misma tabla de usuarios de MyBB. De aquí me viene el problema, cuando codifico el input de la contraseña de mi web a MD5, el codigo que logro y el de la base de datos son distintos, cuando deberían coincidir.

¿Existe alguna forma especial de codificación que usa MyBB que desconozco? He estado buscando por los archivos, pero solo encuentro el típico $password2 = md5($password); que yo también uso. Sin embargo, como bien dije, el codigo que yo creo y el de la DB no coinciden.

Espero que me puedan ayudar con este pequeño problemilla. Saludos y muchas gracias de antemano.
Cual es el codigo que usas? Es un CMS? MyBB usa el MD5 para guardar las claves autenticadas...
Uso MD5: md5() Sin embargo, la clave que creo y la de la database son distintas.
El MD5 es bastante inseguro usandolo por "default" (Hay formas de 'crackearlo'). Por eso MyBB lo "refuerza" con un "salt" y doble encriptación md5.

Para loguear a un usuario, MyBB usa este codigo:
	// Checks to make sure the user can login; they haven't had too many tries at logging in.
	// Is a fatal call if user has had too many tries
	$logins = login_attempt_check();
	$login_text = '';

	if(!username_exists($mybb->input['username']))
	{
		error($lang->error_invalidpworusername.$login_text);
	}
	$user = validate_password_from_username($mybb->input['username'], $mybb->input['password']);
	if(!$user['uid'])
	{
		my_setcookie('loginattempts', $logins + 1);
		$db->write_query("UPDATE ".TABLE_PREFIX."users SET loginattempts=loginattempts+1 WHERE username = '".$db->escape_string($mybb->input['username'])."'");
		if($mybb->settings['failedlogintext'] == 1)
		{
			$login_text = $lang->sprintf($lang->failed_login_again, $mybb->settings['failedlogincount'] - $logins);
		}
		error($lang->error_invalidpassword.$login_text);
	}

	my_setcookie('loginattempts', 1);
	$db->delete_query("sessions", "ip='".$db->escape_string($session->ipaddress)."' AND sid != '".$session->sid."'");
	$newsession = array(
		"uid" => $user['uid'],
	);
	$db->update_query("sessions", $newsession, "sid='".$session->sid."'");
	
	$db->update_query("users", array("loginattempts" => 1), "uid='{$mybb->user['uid']}'");

	// Temporarily set the cookie remember option for the login cookies
	$mybb->user['remember'] = $user['remember'];

	my_setcookie("mybbuser", $user['uid']."_".$user['loginkey'], null, true);
	my_setcookie("sid", $session->sid, -1, true);

	if(function_exists("loggedIn"))
	{
		loggedIn($user['uid']);
	}

(Sacado del portal.php, lineas 56 a 95)
Las funciones que usa ese codigo las podés encontrar en: inc/functions_user.php.

Si no querés ver el código, ésta es la funcion que te interesa:
function salt_password($password, $salt)
{
	return md5(md5($salt).$password);
}
salt_password(md5($_POST['inputpass']), $data['salt']);

¡Lo logré! Muchisimas gracias Aquilez, ya me funciona correctamente. Unos cuantos apaños caseros más y listo.
Colaboradores
Rafael Aquilez
This forum uses Lukasz Tkacz MyBB addons.