Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Solenie moich hashów za pomocą PHP i MySQL

Po pierwsze, Twój DBMS (MySQL) nie musi mieć żadnej obsługi skrótów kryptograficznych. Możesz to wszystko zrobić po stronie PHP i to również powinieneś zrobić.

Jeśli chcesz przechowywać sól i hasz w tej samej kolumnie, musisz je połączyć.

// 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;

Teraz, jeśli chcesz zweryfikować hasło, to robisz:

// 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';
}

Możesz rzucić okiem na phpass , który również wykorzystuje tę technikę. Jest to rozwiązanie haszujące PHP, które wykorzystuje między innymi solenie.

Zdecydowanie powinieneś rzucić okiem na odpowiedź na pytanie, do którego odnosi się WolfOdrade.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ALTER TABLE, aby dodać złożony klucz podstawowy

  2. 1052:Kolumna „id” na liście pól jest niejednoznaczna

  3. Jak uruchomić polecenie MySQL na bash?

  4. Funkcja MySQL COT() — zwraca cotangens liczby w MySQL

  5. Dynamiczna konwersja ciągu na nazwę kolumny. MySQL