sql >> Databáze >  >> RDS >> Mysql

Solení mých hashů pomocí PHP a MySQL

Za prvé, vaše DBMS (MySQL) nemusí mít žádnou podporu pro kryptografické hash. To vše můžete udělat na straně PHP a to je také to, co byste měli udělat.

Pokud chcete sůl a hash uložit do stejného sloupce, musíte je zřetězit.

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

Nyní, pokud chcete ověřit heslo, postupujte takto:

// 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žná se budete chtít podívat na phpass , která tuto techniku ​​také využívá. Je to hašovací řešení PHP, které mimo jiné používá solení.

Určitě byste se měli podívat na odpověď na otázku, na kterou odkazoval WolfOdrade.



  1. Jak vytvořit databázi pomocí Liquibase

  2. Použijte FILEGROUP_NAME() k vrácení názvu skupiny souborů na serveru SQL Server

  3. Nastavit výchozí možnost v rozevíracím seznamu php a zachovat při odeslání dotazu

  4. Použití parametru SqlParameter v klauzuli SQL LIKE nefunguje