Cifrado de contraseñas
De WikiEducator
< Usuario:Lmorillas | desarrollo web servidor | php
Revisión a fecha de 07:50 5 feb 2014; Lmorillas (Discusión | contribuciones)
Contenido
Funciones de cifrado
PHP >= 5.5
$hashed_password = password_hash("mipassword", PASSWORD_DEFAULT) boolean password_verify ( string $password , string $hash ) Todos // 2a es el selector del algoritmo bcrypt algoritmo (ver http://php.net/crypt) // 12 es el factor de carga de trabajo (unos 300ms en un Core i7), ver http://php.net/crypt $salt = bin2hex(openssl_random_pseudo_bytes(22)); $passwd = filter_var($_POST['password'), FILTER_SANITIZE_STRING); $hash = crypt($passwd, "$2a$12$".$salt); // Guarda el hash, no hace falta guardar el salt if (crypt($passwd, $hash) == $hash) { // Verificado } |
Cifrado con pbkdf2
|
Tutoriales
Otros ejemplos de cifrado de contraseñas
<?php $username = $_POST["username"]; $password = $_POST["password"]; // conexión a la base de datos // ... // limpieza de los inputs // ... // crear hash de la password $password = hash("sha256", $password); // guardar valores en la base de datos $sql = "INSERT INTO users (username, password) VALUES (:username, :password)"; $stmt = $db->prepare($sql); $stmt->execute(array( ":username" => $username, ":password" => $password ));
con salt
<?php define("MAX_LENGTH", 6); function generateHashWithSalt($password) { $intermediateSalt = md5(uniqid(rand(), true)); $salt = substr($intermediateSalt, 0, MAX_LENGTH); return hash("sha256", $password . $salt); }
Uso de Bcrypt
<?php function generateHash($password) { if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) { $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22); return crypt($password, $salt); } }
Autentificar usuarios
<?php function verificar($password, $hashedPassword) { return crypt($password, $hashedPassword) == $hashedPassword; }
Práctica de registro de usuarios
Realiza las dos actividades de registro de usuarios siguientes:
|
Práctica. Adaptación de un registro de usuarios
Echa un vistazo a http://www.php-login.net/
|