在php中使用django密码进行身份验证

Pra*_*dan 3 php python encryption django hash

我试图在php中的同一台服务器上创建一个登录系统,通过django创建注册.

我不知道django如何加密密码.我在数据库中可以看到的密码是这样的:

pbkdf2_sha256$10000$qlzlSSgHottd$5hV9BfLpzyAS62KZhvRyDBnagr1rYf29VbkZbfjipV4=
Run Code Online (Sandbox Code Playgroud)

现在我想用PHP创建一个登录系统,它使用上面的散列指定密码进行验证.所以请帮我解释如何为PHP创建登录系统

注意:数据库已经设置好了,我有成千上万的用户正在使用它我需要对我正在构建的不同系统进行身份验证

Den*_*ang 13

我遇到了和你一样的情况,Prateek和一些研究,下面的代码做了我想要的,这就是你想要的.

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

function make_password($password) {
    $algorithm = "pbkdf2_sha256";
    $iterations = 10000;

    $newSalt = mcrypt_create_iv(6, MCRYPT_DEV_URANDOM);
    $newSalt = base64_encode($newSalt);

    $hash = hash_pbkdf2("SHA256", $password, $newSalt, $iterations, 0, true);    
    $toDBStr = $algorithm ."$". $iterations ."$". $newSalt ."$". base64_encode($hash);

    // This string is to be saved into DB, just like what Django generate.
    echo $toDBStr;
}

function verify_Password($dbString, $password) {
    $pieces = explode("$", $dbString);

    $iterations = $pieces[1];
    $salt = $pieces[2];
    $old_hash = $pieces[3];

    $hash = hash_pbkdf2("SHA256", $password, $salt, $iterations, 0, true);
    $hash = base64_encode($hash);

    if ($hash == $old_hash) {
       // login ok.
       return true;
    }
    else {
       //login fail       
       return false; 
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

make_password中生成的$ toDBStr与您在此线程中发布的内容完全相同,您可以将字符串保存到任何数据库,甚至可以使用Django创建的数据库.

您需要选择要传递给verify_Password函数的字符串,以验证密码是否与输入的用户相同.

上面的PHP代码要求PHP 5.5具有hash_pbkdf2函数.

好好享受.