Таким образом, мне удалось успешно зашифровать пароль пользователей и отправить его в БД и т. Д. Я просто хотел узнать, как я буду дешифровать или другие методы, чтобы проверить, вход соответствует паролю БД. Everytime хэш обрабатывается другой зашифрованный пароль created.Using PHP 4,3Как подтвердить пароль после шифрования
<form method="post" action="">
<input type="text" name="user" id="user">
<input type="password" name="pass" id="pass">
<input type="submit" name="submit">
</form>
<?php
session_start();
require_once("connection.php");
require_once("passEncrypt.php");
if(isset($_POST["submit"])) {
$user = $_POST["user"];
$password = $_POST["pass"];
$pass = encrypt($password);
echo $pass;
}
?>
<?php
function encrypt($pass){
// use blowfish algorithm 10 times
$hash_format="$2a$10$";
$salt_length=22;
$salt = generate_salt($salt_length);
// store this in DB
$format_and_salt = $hash_format . $salt ;
$hash = crypt($pass, $format_and_salt);
return $hash;
}
function generate_salt($length){
// return 32 character random string
$unique_string = md5(uniqid(mt_rand(), true));
// provides valid characters
$base64_string = base64_encode($unique_string);
// replaces + with .
$mod_base64_string = str_replace('+', '.', $base64_string);
// make string correct length
$salt = substr($mod_base64_string, 0, $length);
return $salt;
}
?>
Я понимаю, что данные не продезинфицировать или закручивания PHP и т.д .. Я просто пытаюсь понять, как это сделать, прежде чем я внедрить код на мою фактическую страницу.
Я не совсем понимаю, что вы хотите сделать. Правильно ли, что вы хотите сделать что-то вроде 'decrypt ($ pass)', чтобы сравнить его с '$ password'? – derlarsschneider
Я бы использовал клиентское хеширование пароля (JavaScript). – DanFromGermany
Обновление PHP до 5.5, оно было выпущено 20 июня 2013 года, еще лучше обновлено до PHP 7. Используйте 'password_hash()' и 'password_verify()'. Использование более старых версий просто играет в руки злоумышленников, они ищут сайты, использующие более старые версии. – zaph