現今網站多要求使用者註冊,蒐集電子郵件、帳號、密碼等資訊。電子商務網站更涉及電話、地址等隱私資料。這些資料對使用者與網站皆屬核心資產,若資料庫未加密,任何取得資料庫檔案(如 Access .mdb)或具資料庫存取權的網管,皆可輕易閱覽所有明文密碼,造成嚴重洩漏風險。因此,對具隱私性的資料實施加密至關重要,但也應評估資料敏感度,避免對非機密資料浪費系統資源。
加密分雙向(可解密)與單向(不可逆)。MD5 屬單向加密,具兩大特性:
.NET Framework 中 System.Security.Cryptography.MD5CryptoServiceProvider 類別提供 MD5 加密功能,核心方法 ComputeHash 接受位元組陣列並回傳加密後位元組陣列。字串需先透過 UTF8Encoding.GetBytes 轉為位元組陣列再加密。
Dim strPlainText As String = "Encrypt me!"
Dim hashedDataBytes As Byte()
Dim encoder As New UTF8Encoding()
Dim md5Hasher As New MD5CryptoServiceProvider()
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(strPlainText))
採用 MD5 儲存密碼時,密碼欄位型別須從 VarChar 改為 16 位元組二進位型別(如 SQL Server binary(16)),因加密輸出為位元組陣列。使用者註冊時,將輸入密碼經 MD5 加密後寫入資料庫,即使資料庫外洩,攻擊者無法逆向推導原始密碼。
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
前端頁面提供帳號、密碼輸入框,按下「建立帳號」按鈕即觸發加密存儲邏輯。引入上述命名空間為必要步驟。
MD5 單向加密使密碼在資料庫中以二進位雜湊值形式存在,大幅降低明文洩漏風險。下篇將探討登入驗證與進階防護策略。