Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查mysql中SHA256哈希密码在登录表单中是否正确不工作_Php_Mysql_Sha256 - Fatal编程技术网

Php 检查mysql中SHA256哈希密码在登录表单中是否正确不工作

Php 检查mysql中SHA256哈希密码在登录表单中是否正确不工作,php,mysql,sha256,Php,Mysql,Sha256,你好,我的代码有一个小问题。问题是,在minecraft服务器中,用户被要求注册,然后他的注册详细信息进入mysql数据库,密码在SHA256自定义哈希中加密。下面是它的算法: String salt = randomString(length:16); String encryptedPassword = "$SHA$" + salt + "$" + sha256(sha256(password) + salt); 问题是,我需要让人们使用密码和用户名登录我的网站。但为了检查它,我需

你好,我的代码有一个小问题。问题是,在minecraft服务器中,用户被要求注册,然后他的注册详细信息进入mysql数据库,密码在SHA256自定义哈希中加密。下面是它的算法:

    String salt = randomString(length:16);
String encryptedPassword = "$SHA$" + salt + "$" + sha256(sha256(password) + salt);
问题是,我需要让人们使用密码和用户名登录我的网站。但为了检查它,我需要对我的密码进行编码,并检查它们是否相同。但我的代码似乎不起作用,我什么都试过了。请帮帮我。谢谢!!:

    <?php
    require_once 'config.php';
    $mysqli = new mysqli($hostname, $user, $pass, $db4);
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$name = 'name';
$password = 'password';
$v = $mysqli->query("SELECT password FROM authme WHERE username = '".$name."'"); 
                        if ($v->num_rows > 0) {
                            $row = $v->fetch_assoc(); 
                            echo $row['password']; 
                        } 
                        else { 
                            echo 'There is no user with such name';
                            exit();
                        }
function checkPassword($password,$row['password']){
     $parts = explode('$',$row['password']);
     $salt = $parts[2];
     $hashed = hash('sha256',hash('sha256', $password).$salt);
     $hashed = '$SHA$'.$salt.'$'.$hashed;
     if ($hashed == $row['password'])
     {
         return true;
     }
    else {
        return false;
    }
}
if (checkPassword($password, $row['password']) === true) {
    echo 'OMGGGGGGGGGGGGGGGGGGGG';
}
else {
    echo 'something went wrong';
}                       
$mysqli->close();
?>

您正在将单个变量传递到函数中,因此将函数的
$row['password']
的所有引用更改为类似于
$db\u password
的内容

function checkPassword($password, $db_password)
{
    $parts = explode('$', $db_password);
    $salt = $parts[2];
    $hashed = hash('sha256',hash('sha256', $password).$salt);
    $hashed = '$SHA$'.$salt.'$'.$hashed;
    return ($hashed == $db_password) ? true : false;
}