it-swarm.com.de

PHP Salt und Hash SHA256 für das Login-Passwort

Ich habe das Passwort in meinem Registerskript verschlüsselt und es wird in der Datenbank gespeichert, und ich muss es für die Anmeldung verwenden, also möchte ich die unverschlüsselten zur Anmeldung verwenden. Ich habe hier einige Threads gelesen, aber nichts hilft mir. Wie kann ich es in meine login.php einfügen? Das Salz wird auch in der Datenbank gespeichert.

Dies ist mein register.php-Skript zum Verschlüsseln

$hash = hash('sha256', $password1);

function createSalt()
{
    $text = md5(uniqid(Rand(), TRUE));
    return substr($text, 0, 3);
}

$salt = createSalt();
$password = hash('sha256', $salt . $hash);

und das ist mein login.php mit saison

//Create query
$qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    if(mysql_num_rows($result) > 0) {
        //Login Successful
        session_regenerate_id();
        $member = mysql_fetch_assoc($result);
        $_SESSION['SESS_MEMBER_ID'] = $member['id'];
        $_SESSION['SESS_FIRST_NAME'] = $member['username'];
        $_SESSION['SESS_LAST_NAME'] = $member['password'];
        session_write_close();
        header("location: profile.php");
        exit();
    }
    else {
        //Login failed
        //error message 
    }
else {
    die("Query failed");
}
21
Simon_says

Diese Beispiele stammen von php.net. Dank Ihnen habe ich auch gerade die neuen PHP-Hashfunktionen kennengelernt.

Lesen Sie die PHP-Dokumentation, um mehr über die Möglichkeiten und bewährten Methoden zu erfahren: http://www.php.net/manual/de/function.password-hash.php

Passwort-Hash speichern:

$options = [
    'cost' => 11,
];
// Get the password from post
$passwordFromPost = $_POST['password'];

$hash = password_hash($passwordFromPost, PASSWORD_BCRYPT, $options);

// Now insert it (with login or whatever) into your database, use mysqli or pdo!

Passwort-Hash abrufen:

// Get the password from the database and compare it to a variable (for example post)
$passwordFromPost = $_POST['password'];
$hashedPasswordFromDB = ...;

if (password_verify($passwordFromPost, $hashedPasswordFromDB)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
41
andreas

Laut php.net ist die Salt-Option seit PHP= 7.0.0 veraltet, daher solltest du das Salt verwenden, das standardmäßig generiert wird und viel einfacher ist

Beispiel zum Speichern des Passworts:

$hashPassword = password_hash("password", PASSWORD_BCRYPT);

Beispiel zur Bestätigung des Passworts:

$passwordCorrect = password_verify("password", $hashPassword);

3
anguswild

Ich denke, @ Flo254 angekettet $salt bis $password1und gespeichert sie in $hashed Variable. $hashed Variable geht in INSERT Abfrage mit $salt.

0
Herman

Sie konnten sich nicht anmelden, weil Sie zum Zeitpunkt der Anmeldung keinen richtigen Solt-Text erhalten haben. Es gibt zwei Optionen: erstens statisches Salt definieren, zweitens, wenn Sie dynamisches Salt erstellen möchten, als Sie das Salt irgendwo speichern müssen in database) mit join mit user . Dann verketten Sie user solt + password_hash string. Damit lösen Sie die Abfrage mit username in Ihrer Datenbanktabelle aus.

0
Nikunj
array hash_algos(void)

echo hash('sha384', 'Message to be hashed'.'salt');

Hier ist ein Link zur Referenz http://php.net/manual/de/function.hash.php

0
Ngend Lio