Я недавно узнал из Интернета с помощью шифрования blowfish, я могу зашифровать пароль пользователя, когда пользователь регистрируется в базе данных. Однако, когда я хочу проверить значение, которое вводит пользователь при входе в систему. Значение, которое они вводят, не соответствует таковой в базе данных.Шифрование с blowfish
<?php session_start(); ?>
<?php
include("database.php");
include("cryptpassword.php");
$idno = $_POST['ID_Number'];
$password = $_POST['Password']; //inputPass
$conn = dbConnect();
if (!$conn)
die("Couldn't connect to MySQL");
$query = "select * from user where idno='$idno'";
//$queryadmin = "select * from user where idno='$idno' and usertype='admin'";
$result = mysql_query($query, $conn);
//$resultadmin = mysql_query($queryadmin, $conn);
if($row = mysql_fetch_assoc($result)){
$set_password = $row['employeepassword'];
echo $set_password;
}
//$row = mysql_fetch_assoc($resultadmin);
//$set_password = $row['employeepassword'];
$input_password = crypt($password, $set_password);
echo "</br /> $input_password";
if($input_password == $set_password) {
echo "</br />welcome";
}
else {
echo "</br />idiot";
}
dbDisconnect($conn);
?>
два выходных я получаю, являются следующие:
$ 2y $ 10 $ dkGpWiujoaiegVABKvFXruQ $ 2y $ 10 $ dkGpWiujoaiegVABKvFXruQzkyCZIbFCtxq2N/5LmfLbi5dBHW0bS
Первый из базы данных, а второе значение имеют от пользовательский ввод, который я понятия не имею, почему пользовательский ввод имеет дополнительные значения, которые вызывают ошибку проверки.
** Danger **: вы используете [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должны использовать [современную замену] (http://php.net /manual/en/mysqlinfo.api.choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin
Я использую [эту хэш-библиотеку] (http://openwall.com/phpass/), это очень удобно – Dale