ITPub博客

首页 > IT基础架构 > 网络安全 > 用md5加密密码,并判断用户id是不是已有 (转)

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

原创 网络安全 作者:amyz 时间:2007-08-17 09:00:08 0 删除 编辑
用md5加密密码,并判断用户id是不是已有 (转)[@more@]

 

首先,创建一个User表,字段3个:id,Userid和Password,类型分别为int(4),varchar(25)和binary(16).把id设置为自动增加型主键。userid设置为唯一型约束
 
---------------------------------------------------
--添加用户调用的存储过程
CREATE Procedure Sp_UserAdd
  (
  @Userid  varchar(20),
  @Password  binary(16),
  @User_id int OUTPUT
  )
  AS
  INSERT INTO User(Userid,Password)VALUES(@Userid,@Password)
select @User_id = @@identity --得到刚插入纪录的id,注意这里是字段id的值,不是userid字段的值
-----------------------------------------------------
程序根据@User_id的返回值来判断(如果纪录增加成功就会返回当前的id号,SELECT @User_id = @@Identity。不成功就说明,当前要增加的userid在数据库中有重复值,将得不到新的id号。)下面的代码就是根据这点来判断的。
--------------------------
后台代码:
  Import System.Text
  Import System.Data.sqlClient
  Import System.Security.Cryptography  '加密类
'添加用户函数
Sub ADDUser(byval struserid as string,byval strpassword as string)
  '1. 创建连接
  dim strConnString as String
  '连接字符请根据实际情况修改
  strConnString= "Data source=.;Initial Catalog=test;User Id=sa;Password=;"
  Dim objConn as New SqlConnection(strConnString)
 
  '2. 创建Command对象
  Dim objCmd as New SqlCommand("Sp_UserAdd",strConnString)
  objCmd.CommandType = CommandType.StoredProcedure
  '3. 创建参数
  '创建输入参数userid
  Dim paramUserid as SqlParameter
  paramUserid = New SqlParameter("@Userid", SqldbType.VarChar, 25)
  paramUserid.Value = struserid
  objCmd.Parameters.Add(paramUserid)
  '加密密码字段
  Dim md5Hasher as New MD5CryptoServiceProvider() 
  Dim hashedBytes as Byte() 
  Dim encoder as New UTF8Encoding()
  hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(strpassword))
  '创建输入参数Password
  Dim parampassword as SqlParameter
  parampassword = New SqlParameter("@Password", SqlDbType.Binary, 16)
  parampassword.Value = hashedBytes
  objCmd.Parameters.Add(parampassword)
  '创建输出参数Pkid
  Dim paramPkid as SqlParameter
  paramPkid = New SqlParameter("@Pkid", SqlDbType.int, 4)
  paramPkid.Direction = ParameterDirection.Output
  objCmd.Parameters.Add(paramPkid)
  try
  objConn.Open()
  objCmd.ExecuteNonQuery()
  objConn.Close()
  '得到存储过程的返回值
  dim user_Id as integer= paramPkid.Value
  return user_Id.ToString
  catch
  objConn.Close()
  return String.Empty  '返回空值
  end try
end sub
'在需要添加用户的事件中
dim struser_id as string=Adduser(用户名,密码值)
if not struser_id="" then  '判断过程Adduser返回值
  '不为空,无相同的用户名
  '你需要处理的代码
else
  '如果为空,则表示有数据库里有相同的用户名
  '你想显示的错误信息或处理代码
end if


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10752019/viewspace-962960/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3982
  • 访问量
    7896785