Das Hashing von Passwörtern ist eine Technik, bei der ein einzelnes Passwort in eine andere Zeichenfolge umgewandelt wird, die als gehashtes Passwort bezeichnet wird. Das gehashte Passwort ist im Allgemeinen unidirektional, dh wir können nicht vom gehashten Passwort zum ursprünglichen Passwort gehen. Die Sache ist also, warum wir Hashing verwenden mussten, um all diese Dinge zu tun, warum noch einen Kilometer weiter gehen, wenn wir unsere Passwörter als einfache Zeichenfolge in der Datenbank speichern können. Der einzige Grund für all dies ist die Verbesserung der Sicherheit, da die Hacker keine Anmeldeinformationen von unserer wertvollen Website stehlen. Aus diesem Grund verwenden wir verschiedene Hashing-Methoden, um Passwörter zu hashen, um unsere Passwörter zu sichern, während wir Websites erstellen und unsere Datenbank speichern. In PHP gibt es verschiedene kryptografische Algorithmen, die häufig verwendet werden, wie md5, crypt, sha1 und bcrypt. Und die heutzutage am häufigsten verwendete ist die bcrypt-Hashing-Methode. In diesem Artikel,

PHP bietet eine allgemeine Passwort-Hashing-Funktion zum Erstellen eines neuen Passwort-Hashs aus dem Passwort.

Syntax:

string password_hash(string $password, string $algo, array $options = [])

Hier übernimmt die password_hash- Funktion hauptsächlich drei Parameter, nämlich:

  • $password: Das Passwort, das Sie hashen möchten, nimmt einen Zeichenfolgenwert an.
  • $algo: Der Algorithmus, den Sie verwenden möchten, um das Passwort zu hashen. Im Folgenden sind die in PHP verfügbaren Passwortalgorithmen aufgeführt.
    • PASSWORD_BCRYPT: Es verwendet den CRYPT_BLOWFISH-Algorithmus, um den Hash zu erstellen.
    • PASSWORD_ARGON2I: Es verwendet den Argon2i-Algorithmus für das Hashing.
    • PASSWORD_ARGON2ID: Es verwendet den Argon2id-Algorithmus für das Hashing.
    • PASSWORD_DEFAULT: Es verwendet den bcrypt-Algorithmus für das Hashing.
  • $options: Nimmt einen Salt-Wert Der Standardwert ist ein zufälliger Salt-Wert. Ein Salt-Wert , eine zusätzliche Zeichenfolge, die wir beim Hashen an eine Zeichenfolge anhängen.

Rückgabewert: Gibt eine gehashte Passwortzeichenfolge zurück.

Beispiel:

PHP

<?php
 
$password = "GeeksforGeeks";
echo "Password is:", $password;
 
echo "Hashed password using CRYPT_BLOWFISH: ",
    password_hash($password, PASSWORD_BCRYPT);
echo "\n";
 
echo "Hashed password using Argon2i: ",
    password_hash($password, PASSWORD_ARGON2I);
echo "\n";
 
echo "Hashed password using bcrypt: ",
    password_hash($password, PASSWORD_DEFAULT);
?>

Ausgabe:

Passwort ist: GeeksforGeeks

Hash- Passwort mit CRYPT_BLOWFISH: $2y$10$V4Cvy4caGAQBLWbw8i/PHOK9lopTYoxyQze3aZ3ocw9dDvju7Wxoi

Hash- Passwort mit Argon2i: $argon2i$v=19$m=65536,t=4,p=1$Y2F2TVouVWplYVYucy9DSw$p164c28N85L5v1i8GISN1oao10ZzNm9e/JAyicRaX/w

Hash- Passwort mit bcrypt: $2y$10$MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi

Hinweis: Wir haben PASSWORD_ARGON2ID nicht verwendet, da es in der Standard-PHP-Installation nicht verfügbar ist.

So überprüfen Sie das gehashte Passwort: PHP bietet eine eingebaute Funktion namens password_verify, um das gehashte Passwort mit den ursprünglichen Passwörtern abzugleichen.

Syntax:

bool password_verify(string $password, string $hash)

Parameter:

  • $password: Das Passwort, das wir mit einem Hash-Algorithmus gehasht haben.
  • $hash: Das gehashte Passwort, das wir mit dem ursprünglichen Passwort verifizieren werden.

Beispiel:

PHP

<?php
 
$password = "GeeksforGeeks";
 
$hashed_password =
'$2y$10$MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi';
 
echo "Original Password is: ", $password;
echo "\n";
 
echo "Hashed Password is: ", $hashed_password;
echo "\n";
 
if (password_verify($password, $hashed_password)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
 
?>
Ausgabe
Ursprüngliches Passwort ist: GeeksforGeeks
Das gehashte Passwort lautet: $2y$10$MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi
Passwort ist gültig!