sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar och lagrar jag md5-lösenord i mysql

Redigering 2017/11/09:Se till att ta en titt på svaret från O Jones.

Först och främst är MD5 inte den bästa hashmetoden du kan använda för detta försök sha256 eller sha512

Som sagt låter vi använda hash('sha256') istället för md5() för att representera hash-delen av processen.

När du först skapar ett användarnamn och lösenord kommer du att hasha det råa lösenordet med lite salt (några slumpmässiga extra tecken läggs till varje lösenord för att göra dem längre/starkare).

Kan se ut ungefär så här från skapa användarformuläret:

$escapedName = mysql_real_escape_string($_POST['name']); # use whatever escaping function your db requires this is very important.
$escapedPW = mysql_real_escape_string($_POST['password']);

# generate a random salt to use for this account
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));

$saltedPW =  $escapedPW . $salt;

$hashedPW = hash('sha256', $saltedPW);

$query = "insert into user (name, password, salt) values ('$escapedName', '$hashedPW', '$salt'); ";

Sedan vid inloggning ser det ut ungefär så här:

$escapedName = mysql_real_escape_string($_POST['name']);
$escapedPW = mysql_real_escape_string($_POST['password']);

$saltQuery = "select salt from user where name = '$escapedName';";
$result = mysql_query($saltQuery);
# you'll want some error handling in production code :)
# see http://php.net/manual/en/function.mysql-query.php Example #2 for the general error handling template
$row = mysql_fetch_assoc($result);
$salt = $row['salt'];

$saltedPW =  $escapedPW . $salt;

$hashedPW = hash('sha256', $saltedPW);

$query = "select * from user where name = '$escapedName' and password = '$hashedPW'; ";

# if nonzero query return then successful login


  1. Optimera while och SQL i varje

  2. Hur man säkerhetskopierar/exporterar MySQL-databas med PHP

  3. Finns det någon skillnad mellan SQL Server Express (2012) och LocalDB?

  4. Hur man ändrar schema för ett objekt (tabell, vy, lagrad procedur) i SQL Server Database - SQL Server / TSQL självstudie del 28