首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

以 MD5 加密保護資料庫使用者密碼(上)

     編輯:關於SqlServer

為何需要加密儲存密碼?

現今網站多要求使用者註冊,蒐集電子郵件、帳號、密碼等資訊。電子商務網站更涉及電話、地址等隱私資料。這些資料對使用者與網站皆屬核心資產,若資料庫未加密,任何取得資料庫檔案(如 Access .mdb)或具資料庫存取權的網管,皆可輕易閱覽所有明文密碼,造成嚴重洩漏風險。因此,對具隱私性的資料實施加密至關重要,但也應評估資料敏感度,避免對非機密資料浪費系統資源。

MD5 單向加密演算法特性

加密分雙向(可解密)與單向(不可逆)。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 單向加密使密碼在資料庫中以二進位雜湊值形式存在,大幅降低明文洩漏風險。下篇將探討登入驗證與進階防護策略。

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