首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP MD5 密碼雜湊實作:註冊與登入驗證流程

     編輯:PHP 綜合知識

MD5 雜湊保護使用者密碼

資料庫儲存明文密碼極度危險。MD5 將密碼單向雜湊為 32 字元十六進位字串,驗證時比對雜湊值,避免洩露原始密碼。

MD5 基本用法

<?php
$pswd1 = md5("cenusdesign");
echo $pswd1;  // fc60ec37d1c08d5b0fb67a8cd934d5ba

$pswd2 = md5("Cenusdesign");  // 大小寫不同
echo $pswd2;  // 067577d9fc109c80538c81d6f02bd293 (完全不同)
?>

特性:雪崩效應,輸入微小變化導致輸出劇烈不同。

註冊流程

<?php
$password = $_POST['password'];
$hashed = md5($password);  // 雜湊
// 儲存 $hashed 至資料庫
?>

登入驗證流程

<?php
$input_password = $_POST['password'];
$input_hashed = md5($input_password);

// 從資料庫查詢該用戶的雜湊密碼
$db_hashed = $row['password'];  // 假設已查詢

if ($input_hashed === $db_hashed) {
    echo "登入成功";
    // 建立 Session...
} else {
    echo "密碼錯誤";
}
?>

⚠ 重要安全警示

  • MD5 已不安全:碰撞攻擊可行、彩虹表可逆向、GPU 可秒破弱密碼。
  • 必須加鹽:md5($salt . $password),每用戶唯一鹽值儲存於資料庫。
  • 現代最佳實務:使用 bcrypt (PHP password_hash()/password_verify()) 或 Argon2 (PHP 7.2+),內建鹽值、可調成本因子、抗暴力破解。

現代化密碼雜湊 (PHP 5.5+)

<?php
// 註冊
$hash = password_hash($password, PASSWORD_DEFAULT);  // 目前預設 bcrypt
// 儲存 $hash

// 登入驗證
if (password_verify($input_password, $db_hash)) {
    echo "登入成功";
}
// 重新雜湊檢查 (演算法升級時)
if (password_needs_rehash($db_hash, PASSWORD_DEFAULT)) {
    $new_hash = password_hash($input_password, PASSWORD_DEFAULT);
    // 更新資料庫
}
?>

**結論**:教學用 MD5 可理解雜湊概念,**實務專案務必使用 password_hash()/password_verify()**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved