sql >> Database teknologi >  >> RDS >> Mysql

Salter mine hashes med PHP og MySQL

Først og fremmest behøver dit DBMS (MySQL) ikke at have understøttelse af kryptografiske hashes. Du kan gøre alt det på PHP-siden, og det er også, hvad du bør gøre.

Hvis du vil opbevare salt og hash i samme kolonne, skal du sammenkæde 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;

Hvis du nu vil bekræfte en adgangskode, 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 vil måske tage et kig på phpass , som også bruger denne teknik. Det er en PHP-hash-løsning, som blandt andet bruger saltning.

Du bør bestemt tage et kig på svaret på spørgsmålet WolfOdrade linkede til.



  1. Oracle-certificeringer

  2. Simple Encrypted Arithmetic Library (SEAL) og segl::Ciphertext-variablen

  3. Kan SQL Server Express LocalDB tilsluttes eksternt?

  4. Forespørgsel til at beregne summen af ​​afstand (længdegrad, breddegrad) i på hinanden følgende rækker i Mysql