用 MD5 加密数据库中的用户密码

原创 2007年09月14日 14:59:00
在前面的介绍中,我们提到网站往往将用户的账号、密码等信息使用非加密的方式保存到数据库,比如账号使用类型为VarChar的UserCount字段,同样,密码也是采用类型为VarChar的Password字段。但是,如果我们打算采用MD5加密方式存储密码信息,就必须改变密码字段PassWord的类型为16为二进制方式,这个其实我们也不难理解,因为在前面的介绍中,我们知道加密以后的输出,是使用二进制数组的,所以,这里必须做相应的改变。

  当用户注册成功,正式建立一个账号的时候,数据库中就必须为这个用户增加一条记录。以下的程序代码实现了建立一个账号的功能,在页面中,程序要求用户输入账号、密码等信息,然后,将这些信息作为账号信息存入名为UserCount的数据表,在这个表中,用户密码是使用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 CreateAccount(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 = _

"INSERT INTO UserAccount(Username,Password) " & _

"VALUES(@Username, @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 hashedBytes as Byte()

Dim encoder as New UTF8Encoding()


hashedBytes=md5Hasher.ComputeHash(encoder.GetBytes(txtPwd.Text))


Dim paramPwd as SqlParameter

paramPwd = New SqlParameter("@Password", SqlDbType.Binary, 16)

paramPwd.Value = hashedBytes

objCmd.Parameters.Add(paramPwd)


'加入数据库

objConn.Open()

objCmd.ExecuteNonQuery()

objConn.Close()


End Sub

</script>


<form runat="server">

<h1>建立一个账号</h1>

用户名:<asp:TextBox runat="server" id="txtUsername" />

<br />密码:

<asp:TextBox runat="server" id="txtPwd" TextMode="Password" />

<p><asp:Button runat="server" Text="建立用户账号"

OnClick="CreateAccount" /></p>

</form>

 在以上程序实现的页面中,“用户名”和“密码”输入框要求用户输入自己的账号和密码,用户输入自己的信息以后,按“建立用户账号”按钮,就可以建立一个账号并且存入数据库。我们同时需要特别注意,因为以上的程序使用到了MD5加密和数据库等功能,所以,在代码最开头,我们引入了几个稍微特别一点的名字空间,这是不可缺少的。
  我们可以看到,PassWord字段的信息是二进制方式保存的,即使数据库被人取得,也不可能知道密码具体是什么意思。当然,密码也就不会泄露。

相关文章推荐

MD5 用户密码加密

MD5即Message-Digest Algorithm 5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法,在1991年由MITLaboratory for Computer Scienc...

java加密用户登录密码--不用MD5实现

看到一个用java实现的简单的加密,主要是可以进行相应的解密,方便实现,在实现一些小的项目的时候可以进行应用.主要的思路,首先给定一个字符串,随机取两个字符作为加密元,和输入的密码组成一个新的字符串,...

BIEE_外部DB用户验证密码MD5加密

  • 2014年02月15日 13:37
  • 135KB
  • 下载

C# MD5加密登陆用户名称和密码.

  • 2009年02月24日 17:34
  • 3KB
  • 下载

JAVA 数据库密码加密(MD5)

文章出处:http://xxiao0359.blog.163.com/blog/static/979413752010109045701/ import java.security.MessageD...

MD5应用于数据库中密码加密

最近接触网络安全方面的知识,把好的整理下: 登录Web系统时通常都采用用户名和密码的形式,如果这样的数据以明码的方式放在数据库中的话无疑会给别有用心的人以可趁之机,所以采取一定的防范措施是必要的。 ...

数据库密码加密技术MD5

  • 2009年12月26日 02:18
  • 2KB
  • 下载

关于用户密码的简单加密(DES+MD5)与复杂加密(自己想的)

用户信息的加密方式,

shiro记住我与密码匹配次数的配置(md5加密)

简介 1.shiro的记住我与密码匹配都是基于cookie的,将信息存储在cookie中 2.基础配置 http://blog.csdn.net/zzhao114/article/detail...

使用phpass对密码进行加密安全度比md5高

前几天在迷渡博客,看到了国外一些牛人在对密码进行加密的时候,都是使用比对哈希值,来验证密码的,当时感觉有点做作,觉得一个密码有必要那么复杂吗? 先说说我平时在公司是怎么样加密的吧。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用 MD5 加密数据库中的用户密码
举报原因:
原因补充:

(最多只允许输入30个字)