JavaScript - CREAR /ENCRIPTAR Y VERIFICAR CONTRASEÑAS

 
Vista:
Imágen de perfil de Saturnino
Val: 35
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

CREAR /ENCRIPTAR Y VERIFICAR CONTRASEÑAS

Publicado por Saturnino (14 intervenciones) el 20/09/2019 19:29:02
Buenas tardes a todos. Otra vez está el novato preguntando, pero entiendo que con vuestra ayuda aprenderé. Gracias de antemano por aguantarme y dedicar parte de vuestro valioso tiempo en resolver esta cuestión. Pero creo que puede ser interesante para todos.

Me encuentro ante la necesidad, me imagino que habitual en el diseño de web's, de que un usuario se haga cliente, y entre otros datos introduzca una clave, que será necesaria para volver a entrar después.
La clave la introduce a través de:
1
<input id="pass"type="password" name="Clave" pattern="[A-Za-z0-9]{8,12}" title="explico como debe ser la clave." maxlength="12"  />
La envío a un php donde la recibo así:
1
$clave=$_POST["Clave"];
posteriormente la "hasseo" con este comando:
1
$passHash=password_hash($clave,PASSWORD_DEFAULT);
y la guardo en mi Base de datos de esta forma:
1
2
3
4
5
6
7
8
9
$sqli="INSERT INTO claves (NUMCLI, RSOCIAL, CLAVES) VALUES ('$numcli', '$naporscli', '$passHash')";
if (mysqli_query($mysqli, $sqli))
{
    $mens= "Clave Guardada satisfactoriamente.";
}
else
{
    $mens="No se ha podido guardar la clave";
}
y me queda guardada perfectamente.
Para comprobar la contraseña introducida por un supuesto cliente utilizo un formulario para este fin, así:
1
<input id="pass" type="password" name="Clave"  maxlength="12"  />
con el método Post igual que en el otro formulario.
la recibo en la página php de la siguiente forma:
1
$clave=$_POST["Clave"];
Y aquí empieza la duda, por lo menos para mi, la duda era.....
¿debo encriptar la clave introducida antes de compararla o no hace falta encriptar la clave introducida antes de compararla con la existente en la tabla de la base de datos?
1
$claveHash=password_hash($clave,PASSWORD_DEFAULT); // "hasseo" la clave introducida
Leo y extraigo los valores de la tabla claves mediante el siguiente código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$sqli="SELECT NUMCLI, RSOCIAL, CLAVES FROM  claves ";
if ($result=mysqli_query($mysqli, $sqli)) //conjunto de todos los datos de la consulta
{
    $row_cnt=mysqli_num_rows($result);
    echo ("El numero de Registros es.....".$row_cnt);
    echo("hasta aquí he llegado etapa 1......");
        if ($row_cnt>0)
        {
        verclave(); //verificar clave
        }
        else
        {
        echo"La contraseña es incorrecta";
        }
}
else
{
    $mens="No existe ninguna clave";
}
 
function verclave()
{
	global $result;
	global $row_cnt;
	global $clave;
	global $passhash;
	global $claveHash;
	while(($row = mysqli_fetch_assoc($result))!=NULL)
	{
 
   $numcli = $row['NUMCLI'];
   $naporsocial = $row['RSOCIAL'];
   $passHash=$row['CLAVES'];
	}
 
	if (password_verify($clave, $passHash)) // en vez de $clave pongo  $claveHash y tampoco me verifica
		{
			echo '¡La contraseña es válida!';
			$respuesta="Ok";
			header('Location:http://localhost/CONTROL/controlobras.php');
		}
		else
		{
		$respuesta="No_Ok";
		echo ('La contraseña no es válida.');
 
		}
 
}
Mientras que hacía esta consulta, creo que lo he resuelto, lo dejo por si lo veis interesante para alguien.
Creo que así está resuelto. Por si a alguien le sirve. Eso sí fundamental es que el tipo en el campo de la Tabla, en mi caso en el campo "CLAVES", debe ser CHAR con una longitud de 60 caracteres. No se si con VARCHAR funciona.
Un saludo a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder