一:解决方案资源管理器截图:

二:operatorDAL.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HRMSys.Model;
using System.Data.SqlClient;
using System.Data; namespace HRMSys.DAL
{
public class OperatorDAL
{
/// <summary>
/// 插入一个用户
/// </summary>
/// <param name="op"></param>
public void insertUser(Operator op)
{
sqlhelper.ExecuteNon(@"insert into T_Operator (Id,UserName,Password) values (newid(),@UserName,@Password)",
new SqlParameter ("@UserName",op.UserName),
new SqlParameter ("@Password",op.Password));
}
/// <summary>
/// 将表的形式转换为vs的形式,给对象
/// </summary>
/// <param name="row"></param>
/// <returns></returns>
private Operator ToOperator(DataRow row)
{
Operator op = new Operator();
op.Id = (Guid)row["Id"];//不加就可以检查用户名是否重复了
op.UserName = (string)row["UserName"];
op.Password = (string)row["Password"];
return op;
}
/// <summary>
///查询指定username的一条数据
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public Operator loginUser(string name)
{ DataTable table = sqlhelper.datatable("select * from T_Operator where UserName=@UserName",
new SqlParameter ("@UserName",name));
if (table.Rows.Count <= )
return null; else if (table.Rows.Count > )
throw new Exception("用户名重复");
else
{
DataRow row = table.Rows[]; return ToOperator(row);
}
}
}
}

三:commonhelper.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography; namespace HYMSys.UI
{
class CommonHelper
{
/// <summary>
/// MD5加密算法,将添加的用户名和密码加密
/// </summary>
/// <param name="sDataIn"></param>
/// <returns></returns>
public static string GetMD5(string sDataIn)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bytValue, bytHash;
bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn);
bytHash = md5.ComputeHash(bytValue);
md5.Clear();
string sTemp = "";
for (int i = ; i < bytHash.Length; i++)
{
sTemp += bytHash[i].ToString("X").PadLeft(, '');
}
return sTemp.ToLower();
}
}
}

四:hrmsys.cs代码,用于添加用户

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HRMSys.Model;
using HRMSys.DAL; namespace HYMSys.UI
{
public partial class HRMSys : Form
{
public HRMSys()
{
InitializeComponent();
}
/// <summary>
/// 添加一个用户
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void 操作管理员ToolStripMenuItem_Click(object sender, EventArgs e)
{
//MD5将要添加的用户名和密码加密
Operator op = new Operator();
op.UserName = CommonHelper.GetMD5( "hmj"+"Love@.>1");
op.Password = CommonHelper.GetMD5("" + "Love@.>1"); OperatorDAL opDal = new OperatorDAL();
opDal.insertUser(op); }
}
}

五:login.cs代码,用于登录

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HRMSys.Model;
using HRMSys.DAL; namespace HYMSys.UI
{
public partial class login : Form
{
public login()
{
InitializeComponent();
}
/// <summary>
/// 登录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
OperatorDAL opDAL=new OperatorDAL();
//无法直接调用sqlhelper,通过operatorDAL的方法掉用sqlhelper
string name=CommonHelper.GetMD5(tb_name.Text + "Love@.>1");
string password=CommonHelper.GetMD5(tb_pwd.Text+ "Love@.>1");
Operator op = opDAL.loginUser(name);
if (op == null)
MessageBox.Show("用户名不存在");
else if (op.Password != password)
MessageBox.Show("用户名或密码错误");
else
{
HRMSys form = new HRMSys();
form.Show();
this.Hide(); } }
}
}

登录MD5加盐处理的更多相关文章

  1. 搜狐视频 登录 md5 加密破解

    这是一个简单的md5加密,可以学习一下js加密的破解流程,当一个入门级的教程 第一步:请求抓包 password是32位的字母和数字组合,猜测可能是md5加密,我们md5在线工具上试一下 发现我们的猜 ...

  2. iOS - Sign up/in 注册/登录

    1.Sign up/in 1.1 用户登录安全原则 不能在网络上传输用户隐私数据的明文. 不能在本地和服务器上存储用户隐私数据的明文. 1.2 用户登录流程 登录成功之后,应该跳转视图控制器到主页. ...

  3. ADO.NET复习总结(5)--工具类SqlHelper 实现登录

    工具类SqlHelper 即:完成常用数据库操作的代码封装 一.基础知识1.每次进行操作时,不变的代码: (1)连接字符串:(2)往集合存值:(3)创建连接对象.命令对象:(4)打开连接:(5)执行命 ...

  4. discuz X2.0教程]教你快速了解Discuz!程序文件功能,修改文件从此不用再求人

    x3.x数据字典 http://faq.comsenz.com/library/database/x3/x3_index.htm 先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这 ...

  5. 模块二 hashlib模块、configparser模块、logging模块

    算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常 ...

  6. discuz各个目录与文件的作用说明

    discuz下面有很多文件夹以及文件,你们都知道他们是做什么的么?肯定不知道了吧.但是我们有经常遇到这些文件,譬如在后台文件校验操作都遇到某些文件被修改,这时候也需要知道这些文件是有什么作用的.今天就 ...

  7. SQL注入之PHP+Mysql

    PHP+Mysql(GET方法+数值型+有错误回显)的注入方法 目标系统:PHP+MYSQL(GET方法+数值型+有错误信息) 环境说明: 后台地址:http://ip/cms/admin/login ...

  8. python学习-Day22

    目录 今日内容详细 hashlib加密模块 什么是加密 加密算法 加密的使用 基本使用 指定算法(md5) 将明文数据传递给算法对象 获取加密之后的密文数据 加密补充 加盐处理 动态加盐 加密应用场景 ...

  9. hashib加密模块、logging模块

    hashib加密模块 # 加密模块 1.什么是加密 将明文的数据通过一些手段变成能密文数据 密文数据的表现形式一般都是一串没有规则的字符串 2.加密算法 加密算法有很多>>>(讲文明 ...

随机推荐

  1. [配置文件] C#修改App.config,Web.config文件帮助类,ConfigHelper (转载)

    点击下载 ConfigHelper-sufei.rar 主要功能如下 .根据Key取Value值 .根据Key修改Value .添加新的Key ,Value键值对 .根据Key删除项 /// < ...

  2. 个人博客设计:创建Sql数据库操作类。

    整体的博客框架如下 数据库操作java类如下 package com.yxq.dao; import java.sql.Connection; import java.sql.DriverManage ...

  3. 一步一步建MVC

    http://www.cnblogs.com/yuangang/p/5569518.html

  4. jquery 单引号和双引号的区别及使用注意

    在js中单引号和双引号都是一样的,平时使用的时候尽量用单引号,只有碰到嵌套的时候才会同时用两种引号,感兴趣的朋友可以了解下: 可以执行的语法:$("ul li a").filter ...

  5. 利用case when 减少表扫描次数

    数据库环境:SQL SERVER 2008R2 有网友希望有人帮他优化一下他的SQL,SQL语句如下: WITH T AS ( SELECT B.O_Money MON,B.O_States STAT ...

  6. hdu 1788 Chinese remainder theorem again(最小公倍数)

    Problem Description 我知道部分同学最近在看中国剩余定理,就这个定理本身,还是比较简单的: 假设m1,m2,-,mk两两互素,则下面同余方程组: x≡a1(mod m1) x≡a2( ...

  7. JavaScript H5 Canvas

    Canvas 由于浏览器对HTML5标准支持不一致,所以,通常在<canvas>内部添加一些说明性HTML代码,如果浏览器支持Canvas,它将忽略<canvas>内部的HTM ...

  8. session cookie 相结合实现

    数据库配置文件 config.php <?php// config.php 数据库连接文件define('DB_HOST', 'localhost');define('DB_USER', 'ro ...

  9. HTML 5结构

    进行总体布局时候,具体可以用的方法. 1.大纲:文档中各内容区块的结构编排. 内容区块可以使用标题元素来展示各级内容区块的标题. 关于内容区块的编排可以分为“显示编排”和“隐式编排”. 显示编排:明确 ...

  10. 动画特效的原生、jQ和CSS3方法

    最近一直在看运动的JS特效,主要看的是原生写法,太麻烦了,最终看到写了个运动的方法,后面可以直接引用,然后发现这个方法和jQ其实差不多了,代码分别如下: 基本的HMTL和CSS <!DOCTYP ...