[英]Password Encryption Android, PHP
到目前為止,我的Android應用程序都可以使用純文本密碼正常工作。 我正在嘗試將密碼哈希為下一步。 無法找到錯誤所在。
我非常確定使用純文本密碼可以很好地進行通信。 我驗證了散列值已正確存儲在數據庫中(在數據庫中將此屬性用於varchar(80))。
請幫忙。
Register.php
<?php
include("config.php");
session_start();
// username and password sent from form
$firstName = mysqli_real_escape_string($db,$_POST["firstName"]);
$lastName = mysqli_real_escape_string($db,$_POST["lastName"]);
$email = mysqli_real_escape_string($db,$_POST["email"]);
$myusername = mysqli_real_escape_string($db,$_POST["username"]);
$mypassword = mysqli_real_escape_string($db,$_POST["password"]);
$passwordhash = password_hash($mypassword, PASSWORD_DEFAULT);
$sql = "INSERT into user VALUES ('$firstName', '$lastName', '$myusername', '$email', '$passwordhash')";
$result = mysqli_query($db,$sql);
if($result)
{
echo "success";
}else{
echo "failed";
}
?>
Login.php
<?php
include("config.php");
session_start();
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST["username"]);
$mypassword = mysqli_real_escape_string($db,$_POST["password"]);
$sql = "SELECT * FROM user WHERE username = '$myusername'";
$result = mysqli_query($db,$sql);
$count = mysqli_num_rows($result);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$hash = $row['password'];
// If result matched $myusername and $mypassword, table row must be 1 row
if(true === password_verify($mypassword,$hash)) {
echo "success". "\n";
echo $row['firstName'] . "\n";
echo $row['lastName'] . "\n";
echo $row['username'] . "\n";
echo $row['email'] . "\n";
}
else{
echo " Incorrect Login. Please try again ";
}
?>
您需要使用password_verify($ password,$ hash)來驗證密碼。 新的哈希將使用不同的鹽,並導致哈希的新值。
您必須使用另一個名為password_verify的php函數,它將驗證是否使用了特定的密碼來創建哈希。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.