快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

使用MD5加密数据库中的用户密码(二)

使用MD5加密数据库中的用户密码(二)

使用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加密用户密码的实现方式,同时,也介绍了采用加密密码方法以后,用户鉴别的实现。并讨论了使用这种加密方法的应用限制。在实际应用中,我们可以将次方式做适当的修改和补充,以更加适合我们的应用需要。
返回类别: 教程
上一教程: MYSQL怎样优化WHERE子句
下一教程: SQL数据操作基础(中级)9

您可以阅读与"使用MD5加密数据库中的用户密码(二)"相关的教程:
· 使用MD5加密数据库中的用户密码
· 使用MD5加密数据库中的用户密码(一)
· 巧用 SYBASE数据库中的超级用户密码
· 自动备份SQL SERVER数据库中用户创建的STORED PROCEDURES
· 如何删除数据库中的冗余数据
    微笑服务 优质保证 索取样品