程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用MD5加密數據庫中的用戶密碼(二)

使用MD5加密數據庫中的用戶密碼(二)

編輯:關於SqlServer


使用MD5鑒別是否合法用戶

既然用戶密碼是按照MD5加密以後保存在數據庫中的,我們知道,MD5是單次加密算法,所以,不可能將加密以後的信息轉為明文,也就是說,已經沒有辦法知道。這就出現一個問題,如果用戶使用賬號、密碼登錄,怎麼知道用戶提供的密碼是否准確呢?

這就不得不提到我們前文說到的MD5的特征,我們知道,任意一段明文數據,經過加密以後,其結果必須永遠是不變的,也就是說,如果需要驗證用戶密碼是否正確,只需要將用戶當前提供的密碼使用MD5加密,然後和數據庫中保存的密碼字段比較就可以了。以下代碼就可以實現這個功能:

<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClIEnt" %>
<Script runat="server" language="VB">
Sub Login(sender as Object, e as EventArgs)
'1. 建立數據庫連接
Const strConnString as String = "connection string"
Dim objConn as New SqlConnection(strConnString)
'2. 建立Command對象
Dim strSQL as String = "SELECT COUNT(*) FROM UserAccount " & _
"WHERE Username=@Username AND Password=@PassWord"
Dim objCmd as New SqlCommand(strSQL, objConn)
'3. SQL參數
Dim paramUsername as SqlParameter
paramUsername = New SqlParameter("@Username", SqlDbType.VarChar, 25)
paramUsername.Value = txtUsername.Text
objCmd.Parameters.Add(paramUsername)
'加密密碼信息
Dim md5Hasher as New MD5CryptoServiceProvider()
Dim hashedDataBytes as Byte()
Dim encoder as New UTF8Encoding()
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(txtPwd.Text))
Dim paramPwd as SqlParameter
paramPwd = New SqlParameter("@PassWord", SqlDbType.Binary, 16)
paramPwd.Value = hashedDataBytes
objCmd.Parameters.Add(paramPwd)
objConn.Open()
Dim iResults as Integer = objCmd.ExecuteScalar()
objConn.Close()
If iResults = 1 then
'正確
Else
'錯誤
End If
End Sub
</script>
<Form runat="server">
<h1>Login</h1>
用戶賬號: <ASP:TextBox runat="server" id="txtUsername" />
<br />密碼:
<ASP:TextBox runat="server" id="txtPwd" TextMode="PassWord" />
<p><ASP:Button runat="server" Text="Login" OnClick="登錄" />
</form>

使用加密方式保存密碼到數據庫的限制

在決定是否使用加密方式保存密碼以前,我們還需要考慮一些問題。因為MD5是單次加密算法,加密以後的信息不可以解密,所以,如果用戶丟失密碼,任何人都很難找到用戶原來的密碼,這時候,網站也就相應的失去一個很重要的功能,那就是用戶提供其他信息來取得忘記的密碼的功能,這不能不說是網站的一個大缺陷。另外,采用這樣的加密方式,必須完全修改以前的用戶資料,要求用戶完全重新注冊,這也是這種方法比較困難的一個地方。

總 結

以上我們詳細介紹了MD5加密用戶密碼的實現方法,同時,也介紹了采用加密密碼方式以後,用戶鑒別的實現。並討論了使用這種加密方式的應用限制。在實際應用中,我們可以將次方法做適當的修改和補充,以更加適合我們的應用需要。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved