登录MD5加盐处理
一:解决方案资源管理器截图:

二: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加盐处理的更多相关文章
- 搜狐视频 登录 md5 加密破解
这是一个简单的md5加密,可以学习一下js加密的破解流程,当一个入门级的教程 第一步:请求抓包 password是32位的字母和数字组合,猜测可能是md5加密,我们md5在线工具上试一下 发现我们的猜 ...
- iOS - Sign up/in 注册/登录
1.Sign up/in 1.1 用户登录安全原则 不能在网络上传输用户隐私数据的明文. 不能在本地和服务器上存储用户隐私数据的明文. 1.2 用户登录流程 登录成功之后,应该跳转视图控制器到主页. ...
- ADO.NET复习总结(5)--工具类SqlHelper 实现登录
工具类SqlHelper 即:完成常用数据库操作的代码封装 一.基础知识1.每次进行操作时,不变的代码: (1)连接字符串:(2)往集合存值:(3)创建连接对象.命令对象:(4)打开连接:(5)执行命 ...
- discuz X2.0教程]教你快速了解Discuz!程序文件功能,修改文件从此不用再求人
x3.x数据字典 http://faq.comsenz.com/library/database/x3/x3_index.htm 先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这 ...
- 模块二 hashlib模块、configparser模块、logging模块
算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常 ...
- discuz各个目录与文件的作用说明
discuz下面有很多文件夹以及文件,你们都知道他们是做什么的么?肯定不知道了吧.但是我们有经常遇到这些文件,譬如在后台文件校验操作都遇到某些文件被修改,这时候也需要知道这些文件是有什么作用的.今天就 ...
- SQL注入之PHP+Mysql
PHP+Mysql(GET方法+数值型+有错误回显)的注入方法 目标系统:PHP+MYSQL(GET方法+数值型+有错误信息) 环境说明: 后台地址:http://ip/cms/admin/login ...
- python学习-Day22
目录 今日内容详细 hashlib加密模块 什么是加密 加密算法 加密的使用 基本使用 指定算法(md5) 将明文数据传递给算法对象 获取加密之后的密文数据 加密补充 加盐处理 动态加盐 加密应用场景 ...
- hashib加密模块、logging模块
hashib加密模块 # 加密模块 1.什么是加密 将明文的数据通过一些手段变成能密文数据 密文数据的表现形式一般都是一串没有规则的字符串 2.加密算法 加密算法有很多>>>(讲文明 ...
随机推荐
- .net单元测试——常用测试方式(异常模拟、返回值测试、参数测试、数据库访问代码测试)
最近在看.net单元测试艺术,我也喜欢单元测试,今天介绍一下如何测试异常.如何测试返回值.如何测试模拟对象的参数传递.如何测试数据库访问代码.单元测试框架使用的是NUnit,模拟框架使用的是:Rhin ...
- Android 设计随便说说
我曾经搞过应用程序的设计,当时只是读了半本宝典<重构...>,现在看来就这半本九阴真经,收益甚多啊 .再加上这现年工作上的印证,基本上可以拿出喷一下了.当然现在看来当年的项目设计真是很烂了 ...
- AngularJS code converage
karma-coverage The easiest way is to keep karma-coverage as a devDependency in your package.json. Mo ...
- linux rman shell
# make direcory for backset file and scripts file,in my case /backup/db_bak cd /backup/db_bak mkdi ...
- 分享red hat linux 6上安装oracle11g时遇到的gcc: error trying to exec 'cc1': execvp: No such file or directory的问题处理过程
安装环境:Red Hat Linux 6.5_x64.oracle11g 64bit 报错详情: 安装到68%时弹窗报错: 调用makefile '/test/app/Administrators/p ...
- Linux使用fdisk进行磁盘管理
Fdisk分区工具1. Overview*Fdisk是IBM的老牌分区工具,支持绝大多数操作系统,几乎所有的Linux操作系统都默认装有fdisk:包括在Linux Rescue模式下 ...
- OC基础-day06
#pragma mark - Day06_01_点语法 1. 点语法. 1). 如果要访问对象的属性,还要去调用属性对应的setter getter方法.好烦躁好烦躁. 2). 点语法的作用: 快速调 ...
- C#世界中的委托
委托是C#最重要的特性之一,C#后面的所有特性基本都是建立在委托的基础上的. 1.C#委托是什么? 可以把C#的委托理解为函数的一个包装,它使得C#中的函数可以作为参数来被传递.如果你学过C++,可以 ...
- XhProf安装教程–详细教程
wget去这里找最新的包下载,我现在最新的是xhprof-0.9.4.tgz cd /tmp mkdir xhprof && cd xhprof wget http://pecl.ph ...
- 选择排序(C++)
选择排序(C++) 选择排序: 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待 ...