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

这篇博客介绍了如何使用MD5加密密码并利用存储过程在数据库中添加用户。当用户ID已存在时,通过检查存储过程返回的ID值来判断并处理冲突。文章涉及SQL Server的存储过程创建、C#代码示例以及MD5加密方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

首先,创建一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值