sql >> Databasteknik >  >> RDS >> Mysql

Saltar mina hash med PHP och MySQL

Först och främst behöver inte din DBMS (MySQL) ha något stöd för kryptografiska hash. Du kan göra allt det på PHP-sidan, och det är också vad du bör göra.

Om du vill lagra salt och hash i samma kolumn måste du sammanfoga dem.

// the plaintext password
$password = (string) $_GET['password'];

// you'll want better RNG in reality
// make sure number is 4 chars long
$salt = str_pad((string) rand(1, 1000), 4, '0', STR_PAD_LEFT);

// you may want to use more measures here too
// concatenate hash with salt
$user_password = sha512($password . $salt) . $salt;

Om du nu vill verifiera ett lösenord gör du:

// the plaintext password
$password = (string) $_GET['password'];

// the hash from the db
$user_password = $row['user_password'];

// extract the salt
// just cut off the last 4 chars
$salt = substr($user_password, -4);
$hash = substr($user_password, 0, -4);

// verify
if (sha512($password . $salt) == $hash) {
  echo 'match';
}

Du kanske vill ta en titt på phpass , som också använder denna teknik. Det är en PHP-hashningslösning som bland annat använder saltning.

Du bör definitivt ta en titt på svaret på frågan WolfOdrade länkade till.



  1. Välj varje månad även om månaden inte finns i mysql-tabellen

  2. Vad är nytt i MariaDB 10.6

  3. ) Operatör för nybörjare

  4. Transaktionsloggkonfigurationsproblem