用 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加密数据库中的用户密码介绍 ●前言我们知道,现在网络上一般的网站,稍微完善一点的,往往都需要用户先注册,提供诸如电子邮件、账号、密码等信息以后,成为网站栏目的注册用户,才可以享受网站一些特殊...
  • accp_fangjian
  • accp_fangjian
  • 2006年11月01日 14:45
  • 7185

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

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

java MD5加密算法:(给用户密码MD5加密保存)

package com.task.util;   import java.security.NoSuchAlgorithmException; //生成32小的md5加密数据 public c...
  • zhbitxhd
  • zhbitxhd
  • 2012年11月08日 21:57
  • 1102

对用户输入的密码进行MD5加密

///         /// 用户登陆         ///         ///         ///         private void Btn_Login_Cli...
  • softuse
  • softuse
  • 2016年05月11日 11:29
  • 1114

C#编写注册界面将密码通过MD5加密后存入数据库

c# 将密码转换为md5 32位 public static string GetMD5(String input) { string cl = input; ...
  • English0523
  • English0523
  • 2016年07月28日 17:54
  • 2252

用md5加密密码,并判断用户id是不是已有

  首先,创建一个User表,字段3个:id,Userid和Password,类型分别为int(4),varchar(25)和binary(16).把id设置为自动增加型主键。userid设置为唯一型...
  • jxf_yx
  • jxf_yx
  • 2003年12月11日 11:40
  • 1299

MYSQL数据库里面的所有密码批量MD5加密

如果你的字段够长度的话: UPDATE users SET password = MD5(password); 如果长度不够,可以先增加长度后再做,或者多建一列,完成后删除原来的列!(如passwd)...
  • hireboy
  • hireboy
  • 2013年06月25日 13:55
  • 2815

找回MD5加密的密码及MD5加密数据库中数据

有时,在开发过程中,如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办?最为菜鸟的我,刚开始也很迷茫,不过向前辈们请教了请教,自己也查了查资料,特意整理...
  • chenleixing
  • chenleixing
  • 2015年03月22日 22:36
  • 2198

java中使用MD5算法给密码加密的方式

package test.base64; import java.math.BigInteger; import java.security.MessageDigest; import java.s...
  • z83986976
  • z83986976
  • 2015年01月11日 09:57
  • 1387

将用户密码变为md5值保存在数据库

加密一般有两种,即双向加密和单项加密,双向加密最常用,他既能加密又能解密,单项加密只能对数据进行加密,不能解密,MD5就是单项加密,MD5加密是根据指定的密码和哈希算法生成一个适合于存储在配置文件中的...
  • my383617487
  • my383617487
  • 2017年12月13日 10:55
  • 74
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用 MD5 加密数据库中的用户密码
举报原因:
原因补充:

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