Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/11/2013, 19:16
Mati92_CPArg
 
Fecha de Ingreso: octubre-2011
Mensajes: 20
Antigüedad: 12 años, 6 meses
Puntos: 1
Encriptar contraseña y comparar para login

Buenas, quería ver si alguien podría darme una mano.

Lo que estoy haciendo es un sistema de registro y logueo de usuario, el tema es la encriptacion de la clave.

En el Registro utilice este codigo para encriptar la clave:

Código:
function encriptar($contrasena, $numero = 7){
    $salt = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./';
    $saltc = sprintf('$2y$%02d$', $numero);
    for($i = 0; $i < 22; $i++)
        $saltc .= $salt[ rand(0, strlen($salt)-1) ];
     
    return crypt($contrasena, $saltc);
}
	
	$contrasena = encriptar('$contrasena');
Guardo la contraseña en la base de datos.

Ahora como comparo esa clave guardada con la que coloca el usuario para loguearse luego.

En el logueo el codigo es asi:

Código:
$usuario=$_POST['usuario'];
$contrasena=$_POST['contrasena'];	

$sql="SELECT * FROM tabla WHERE usuario='$usuario'";
	$resultado=mysqli_query($conexion, $sql) or die (mysqli_error());
		if(mysqli_num_rows($resultado)>0){	
			$registro=mysqli_fetch_assoc($resultado);
			$contrasenaencriptada=$registro['contrasena'];
			if(crypt($contrasena, $contrasenaencriptada) == $contrasenaencriptada){
				 echo "Conexion Exitosa";
				$_SESSION['usuario']=$usuario;
				$_SESSION['login_ok']=1;	
			}
			else{
				echo "ERROR";
			}

				 

		}else{
			echo "Error de Conexion, compruebe su usuario y contraseña";
		}
Algo estoy haciendo mal? Desde ya gracias. Y la clave se guarda en la base de datos encriptada o eso parece.