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

Crypt() saltgenerering og adgangskodekryptering, godt udført?

Der er nogle punkter, der kan forbedres, men først vil jeg anbefale at bruge PHPs nye funktion password_hash() . Denne funktion vil generere et sikkert salt og inkludere det i den resulterende hash-værdi, så du kan gemme det i et enkelt databasefelt. Der findes også en kompatibilitetspakke for tidligere versioner.

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);

Nogle tanker om din kode:

  1. Du genererer en BCrypt-hash med crypt(), så saltet vil være en del af den resulterende hash. Det er ikke nødvendigt at opbevare det separat.
  2. Genereringen af ​​saltet kan forbedres, brug den tilfældige kilde til operativsystemet MCRYPT_DEV_URANDOM.
  3. Hvis du ville ændre omkostningsfaktoren til 9, ville formatet blive ugyldigt, fordi krypten forventer to cifre.



  1. Indstilling af skema i PostgreSQL JDBC ser ikke ud til at virke

  2. fail execute statement med php og mysql

  3. SQL:Returnerer den mest almindelige værdi for hver person

  4. Tyrkiske tegn vises ikke korrekt