簡體   English   中英

密碼加密Android,PHP

[英]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函數,它將驗證是否使用了特定的密碼來創建哈希。

http://php.net/manual/zh/function.password-verify.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM