栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

自己写的一个登陆窗体验证过程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自己写的一个登陆窗体验证过程

(直接从我的源码上截取的,有多余的东西请不要纠结)


//判断是否为空
if (txtUser.Text == string.Empty || txtPwd.Text == string.Empty)
     {
  MessageBox.Show("请确认您的账号密码输入!", "帐密不能为空", MessageBoxButtons.OK, MessageBoxIcon.Information);
  txtPwd.Text = string.Empty;
     }
     else
     //开始处理过程
     {
  //创建连接对象
  MySqlConnection conn = new MySqlConnection();
  //设置连接串,其中用户名密码用你们的配置直接写即可(但实际上一般应该写在配置文件上的,这里为了做个演示就直接写在这了)
  conn.ConnectionString = "Server=Localhost;Database=CQP;User=*********;Password=**********;";
  //设置登陆成功Flag
  bool isConnectSuccess = true;
  //尝试登陆
  try
  {
      conn.Open();
  }
  catch (MySqlException ex)
  {
      isConnectSuccess = false;
      MessageBox.Show("连接失效!请重新启动应用程序或者联系管理员!n" + ex.ToString(), "连接失败!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
      //这里是处理配置连接的语句入口,暂时先预留入口

  }
  finally
  {
      if (isConnectSuccess)
      {
   //创建命令对象
   MySqlCommand comGetKey = conn.CreateCommand();
   comGetKey.CommandText = "select `userpwd` from `user` where `username`='" + txtUser.Text + "'";
   //创建记录集存储查询结果
   MySqlDataReader dr = comGetKey.ExecuteReader();
   if (!dr.HasRows)
   {
MessageBox.Show("请确认您的账号密码输入!", "错误的用户名/密码", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtPwd.Text = string.Empty;
   }
   else
   {
dr.Read();
string pwdCheck = dr["userpwd"].ToString();
dr.Close();
//开始验证过程,注意,这里我使用了SHA-512作为加密方式,MD5已经不安全,再次跟广大读者声明,MD5已经不安全,请尽快更换至SHA-512以上更安全的加密方式,同时避免直接Hash,最好是加盐后多次Hash
byte[] byteUser = Encoding.UTF8.GetBytes(txtUser.Text);
byte[] bytePwd = Encoding.UTF8.GetBytes(txtPwd.Text);
SHA512 sha = new SHA512CryptoServiceProvider();
byte[] checkResultArray = sha.ComputeHash(byteUser);
byte[] temp = new byte[checkResultArray.Length + bytePwd.Length];
checkResultArray.CopyTo(temp, 0);
bytePwd.CopyTo(temp, checkResultArray.Length);
checkResultArray = sha.ComputeHash(temp);
string checkResult = Convert.Tobase64String(checkResultArray);
//检查Hash结果
if (pwdCheck == checkResult)
{
    //打开主窗口
    this.Hide();
    frmMain Main = new frmMain();
    Main.Show();
}
   }
      }
      //关闭连接
      if (conn.State != ConnectionState.Closed)
      {
   conn.Close();
      }
      conn.Dispose();
  }
     }

在这里我要提醒一下各位兄弟,这里由于代码还没仔细处理好的原因第一次获取密码验证的地方是没有检查的,请各位在那之前,做好有关的正则或者符号检查工作确认不会造成信息泄露(永远不要相信用户不会给你造成麻烦,这是我给你的忠告,嗯),其上的代码可以给你们作为参考,希望不会坑到你们啦(≥_≤)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/231980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号