當前位置: 首頁> 最新文章列表> PHP與SQLite實現密碼加密與驗證:全面指南

PHP與SQLite實現密碼加密與驗證:全面指南

M66 2025-06-13

引言

在現代互聯網時代,密碼的安全性至關重要。為了保障用戶的隱私,網站通常會通過密碼加密和驗證來存儲和處理用戶的密碼信息。本文將介紹如何使用PHP和SQLite來實現這一功能。

一、密碼加密

密碼加密是將用戶輸入的明文密碼轉換為一串不可讀的隨機字符串。即便數據庫數據洩露,密碼也不會以明文形式暴露。 PHP中可以通過password_hash()函數來實現密碼的加密。

 
// 密碼加密示例
$password = "123456";
$hash = password_hash($password, PASSWORD_DEFAULT);

上述代碼中,$password代表用戶輸入的明文密碼,而$hash則是加密後的密碼。函數password_hash()會根據當前的默認算法生成加密密碼。

二、密碼驗證

在用戶登錄時,必須驗證輸入的密碼是否與數據庫中存儲的加密密碼一致,以確保用戶身份的合法性。在PHP中,可以使用password_verify()函數進行驗證。

 
// 密碼驗證示例
$password = "123456";
$hash = "$2y$10$KZxpkRfkBrmJr9X11qaIjeJf1cgjF9OXmcruE/YqLqKx6F79KRjlC";

if (password_verify($password, $hash)) {
    echo "密碼驗證通過";
} else {
    echo "密碼驗證失敗";
}

在這個例子中,$password是用戶輸入的明文密碼,$hash是從數據庫中取出的加密密碼。通過password_verify()函數可以判斷密碼是否匹配。

三、使用SQLite數據庫存儲密碼

在本示例中,我們將使用SQLite數據庫存儲用戶的密碼信息。 SQLite是一款輕量級的嵌入式數據庫,不需要外部數據庫服務器,適合小型項目或個人使用。

首先,創建一個SQLite數據庫,並設置一個用戶表來存儲密碼信息。

 
// 創建SQLite資料庫
$db = new SQLite3("mydb.db");

// 創建用户表
$query = "CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT NOT NULL,
    password TEXT NOT NULL
);";
$db->exec($query);

接下來,將加密後的密碼存儲到數據庫中。

 
// 将密码存储到資料庫
$password = "123456";
$hash = password_hash($password, PASSWORD_DEFAULT);

$query = "INSERT INTO users (username, password) VALUES ('user1', '$hash')";
$db->exec($query);

完成密碼的加密存儲後,用戶登錄時需要進行密碼驗證。

 
// 用戶登錄
$username = "user1";
$password = "123456";

// 从資料庫中获取密码
$query = "SELECT password FROM users WHERE username = '$username'";
$result = $db->querySingle($query);

// 驗證密碼
if (password_verify($password, $result)) {
    echo "登錄成功";
} else {
    echo "登錄失敗";
}

// 关闭資料庫连接
$db->close();

通過這些代碼,我們可以實現用戶密碼的加密和驗證功能,確保用戶密碼的安全性,避免敏感信息洩露。

結論

PHP和SQLite提供了一種簡單且高效的方式來實現密碼的加密和驗證。通過合理使用這些功能,我們可以有效地提升網站的安全性,保護用戶的隱私。