[SQL與PHP] PHP 加密在資料庫的密碼(md5登入)



[SQL與PHP] PHP 加密在資料庫的密碼(md5登入)

PHP 加密在資料庫的密碼(md5登入)當用戶數量比較多時,用資料庫儲存用戶名稱及密碼是很好的選擇,但如果直接將用戶的密碼儲存在資料庫,即使資料庫要密碼才可以登入也有安全性的問題。例如系統管理員或者 Web Hosting 的員工便可以看到用戶的密碼,所以先將用戶密碼加密是必要的步驟。

PHP 內建了 MD5() 單向加密演算法,即只可加密,而不可以反向解密,以下是利用 MD5() 函式的具體方法:

這裡是將用戶密碼用 MD5() 加密後加插入資料庫:
  1. <?php
  2. $db_conn = mysql_connect("host", "db_user", "db_pass");
  3. mysql_select_db("db_name", $db_conn);

  4. // 插入資料表的 $password 用了 md5 加密
  5. mysql_query("insert into users values
  6.                         ('$username', '".md5($password)."')");
  7. ?>
複製代碼
檢查用戶名稱及密碼:
  1. <?php
  2. $db_conn = mysql_connect("host", "db_user", "db_pass");
  3. mysql_select_db("db_name", $db_conn);

  4. $sql = mysql_query("select * from users where
  5.                         `username`='$username' and
  6.                         `password`='".md5($password)."'");

  7. if (mysql_num_rows($sql) > 0) {
  8.     // 用戶名稱及密碼正確
  9. } else {
  10.     // 用戶名稱及密碼錯誤
  11.     exit();
  12. }
  13. ?>
複製代碼
用以上方法寫出來的登入系統,只用用戶是知道自己的密碼,系統管理員最多只能夠修改密碼,而不能看到源始密碼是什麼。