-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPasswordManager.php
More file actions
45 lines (40 loc) · 1.19 KB
/
Copy pathPasswordManager.php
File metadata and controls
45 lines (40 loc) · 1.19 KB
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
<?php
/**
* Trabaja con el algoritmo BCRYPT para obtener el valor hash de una cadena
* o para verificar que la cadena se corresponde a un hash especificado
*
* @author jorge
*/
class PasswordManager {
public static function getTiempo(){
$timeTarget = 0.05; // 50 milisegundos
$coste = 8;
do {
$coste++;
$inicio = microtime(true);
password_hash("test", PASSWORD_BCRYPT, ["cost" => $coste]);
$fin = microtime(true);
} while (($fin - $inicio) < $timeTarget);
return $coste;
}
/**
* Obtiene un valor hash para una cadena, con un coste por defecto de 14
* @param string $cadena
* @param int $coste
* @return string
*/
public static function hash($cadena,$coste = 14){
$options = [ 'cost' => $coste ];
return password_hash($cadena, PASSWORD_BCRYPT, $options);
}
/**
* Comprueba que la cadena pasada como parámetro corresponde al hash
* especificado
* @param string $cadena
* @param string $hash
* @return boolean
*/
public static function verifyHash($cadena,$hash){
return password_verify($cadena, $hash);
}
}