Php 密码加密 更新:

Php 密码加密 更新:,php,android,encryption,hash,Php,Android,Encryption,Hash,到目前为止,我的安卓应用程序可以很好地使用纯文本密码。作为下一步,我正在尝试散列密码。找不到错误是什么 我非常确信,使用纯文本密码进行通信是正常的。 我验证了哈希值是否正确地存储在DB中(在DB中使用varchar(80)作为该属性) 请帮忙 Register.php <?php include("config.php"); session_start(); // username and password sent from form $firstName = mys

到目前为止,我的安卓应用程序可以很好地使用纯文本密码。作为下一步,我正在尝试散列密码。找不到错误是什么

我非常确信,使用纯文本密码进行通信是正常的。 我验证了哈希值是否正确地存储在DB中(在DB中使用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";

}



?>

您必须使用另一个名为password\u verify的php函数,它将验证特定密码是否用于创建哈希


您必须使用另一个名为password\u verify的php函数,它将验证特定密码是否用于创建哈希



您需要使用密码验证($password,$hash)来验证密码。新的哈希将使用不同的salt并为哈希生成新值。

您需要使用password\u verify($password,$hash)来验证密码。新的散列将使用不同的salt并为散列生成新值。

不要再次调用
password\u hash()
,而是使用
password\u verify()
“如果Android中有加密方法”,只需在PHP端使用SSL/TLS即可。“这样我就可以直接查询数据库,而无需在php级别执行任何加密”不要这样做。您希望存储的密码是散列的,而不是纯文本。请参阅“是”。通过这种方式,我可以直接查询数据库,而无需在php级别执行任何加密。我的意思是,我希望在Android应用程序中加密密码,并通过互联网发送密码。不是纯文本。我只是更新了我的错误。请重新访问查询和帮助。不要再次调用
password\u hash()
,而是使用
password\u verify()
“如果Android中有加密方法”,只需在PHP端使用SSL/TLS即可。“这样我就可以直接查询数据库,而无需在php级别执行任何加密”不要这样做。您希望存储的密码是散列的,而不是纯文本。请参阅“是”。通过这种方式,我可以直接查询数据库,而无需在php级别执行任何加密。我的意思是,我希望在Android应用程序中加密密码,并通过互联网发送密码。不是纯文本。我只是更新了我的错误。请重新访问查询并提供帮助。您有什么可以帮助我们的吗?错误消息?或者只是返回false?我能够读取数据库中的哈希。我也能把这个散列应用到Android上。但是我不确定如何调试密码验证函数的输出。我只是更新了我的错误。请重新访问查询和帮助。请尝试此$passwordhash=password\u hash($mypassword,password\u BCRYPT);我遇到了意外的php哈希行为问题。使用特定的哈希算法有帮助。你有什么可以帮助我们的吗?错误消息?或者只是返回false?我能够读取数据库中的哈希。我也能把这个散列应用到Android上。但是我不确定如何调试密码验证函数的输出。我只是更新了我的错误。请重新访问查询和帮助。请尝试此$passwordhash=password\u hash($mypassword,password\u BCRYPT);我遇到了意外的php哈希行为问题。使用特定的散列算法有帮助。我刚刚更新了我的错误。请重新访问查询和帮助。即使结果只有一行,您仍然需要使用$row[0]['password']获取该行。我刚刚更新了错误。请重新访问查询和帮助。即使结果只有一行,您仍然需要使用$row[0]['password']获取该行
    <?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 ";
}


?>