Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara membuat dan menyimpan kata sandi md5 di mysql

Sunting 2017/11/09:Pastikan untuk melihat jawaban dari O Jones.

Pertama MD5 bukanlah metode hashing terbaik yang dapat Anda gunakan untuk percobaan ini sha256 atau sha512

Yang mengatakan mari gunakan hash('sha256') bukannya md5() untuk mewakili bagian hashing dari proses.

Saat pertama kali membuat nama pengguna dan sandi, Anda akan membuat sandi mentah dengan sedikit garam (beberapa karakter tambahan acak ditambahkan ke setiap sandi untuk membuatnya lebih panjang/kuat).

Mungkin terlihat seperti ini dari formulir buat pengguna:

$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'); ";

Kemudian pada saat login akan terlihat seperti ini:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabel Database, lebih banyak lebih baik?

  2. Cara Memeriksa Versi MySQL Anda

  3. Mendefinisikan Composite Key dengan Auto Increment di MySQL

  4. Masalah Django dan mysql di Mavericks

  5. MySQL SEKARANG () berfungsi dengan presisi tinggi