MD5登陆验证问题!Passwd密码字段设置为nvarchar,用户注册的时候用MD5(32位)加密并存储,现在登陆出现问题.
怎么登陆验证Passwd里面经过加密的密码?请大哥详细的帮我写一下,急!!! private void button1_Click(object sender, EventArgs e)
{
string st;
st = lblusername.Text.ToString();
string strPwd = "";
strPwd = lblpassword.Text.ToString();
for (int i = 0; i < DT.Rows.Count; i++)
{
if (st.Trim() == DT.Rows[i]["UserName"].ToString().Trim())
{
if (strPwd.Trim() == DT.Rows[i]["Passwd"].ToString().Trim())
{ this.DialogResult = DialogResult.OK;//成功 //在Program.cs中写 // static void Main()
//{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
// login fm = new login();
//if (fm.ShowDialog() == DialogResult.OK)
// {
// Application.Run(new FrmMain());
// }
//login form1 = new login ();
//form1.Close();
//FrmMain form2 = new FrmMain ();
//form2.Show();
}
else
{
MessageBox.Show("你的用户名或密码不正确,请重新输入!");
return;
}
}
怎么登陆验证Passwd里面经过加密的密码?请大哥详细的帮我写一下,急!!! private void button1_Click(object sender, EventArgs e)
{
string st;
st = lblusername.Text.ToString();
string strPwd = "";
strPwd = lblpassword.Text.ToString();
for (int i = 0; i < DT.Rows.Count; i++)
{
if (st.Trim() == DT.Rows[i]["UserName"].ToString().Trim())
{
if (strPwd.Trim() == DT.Rows[i]["Passwd"].ToString().Trim())
{ this.DialogResult = DialogResult.OK;//成功 //在Program.cs中写 // static void Main()
//{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
// login fm = new login();
//if (fm.ShowDialog() == DialogResult.OK)
// {
// Application.Run(new FrmMain());
// }
//login form1 = new login ();
//form1.Close();
//FrmMain form2 = new FrmMain ();
//form2.Show();
}
else
{
MessageBox.Show("你的用户名或密码不正确,请重新输入!");
return;
}
}
解决方案 »
- 关于.net 程序的图片资源
- C#获取本机已经安装的.net framework版本号。
- web 中已知某树节点的text 如何将将展开到此节点????
- webservice的问题,菜鸟小题,要分的来。
- 关于Page.RegisterClientScriptBlock()的问提
- Encoding.UTF8.GetBytes() 同 encoding.GetBytes() 编码的结果一样?
- 如何获得画图程序中出现的图像坐标呢
- 文字排版
- 怎么从内存中卸载掉加装入的程序集?分不够再加
- datagrid数据过滤问题。
- 有没有人在简体中文版Windows下做的WinForm拿到繁体操作系统试。
- 还是关于WinForm(在线等,必给分)
然后再用加密完的值与数据库中的字段比较就可以了啊
{
string st;
st = lblusername.Text.ToString();
string strPwd = "";
strPwd = lblpassword.Text.ToString();
for (int i = 0; i < DT.Rows.Count; i++)
{
if (st.Trim() == DT.Rows[i]["UserName"].ToString().Trim())
{
if (StringToMD5Hash(strPwd.Trim()) == DT.Rows[i]["Passwd"].ToString().Trim())
{ this.DialogResult = DialogResult.OK;//成功 //在Program.cs中写 // static void Main()
//{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
// login fm = new login();
//if (fm.ShowDialog() == DialogResult.OK)
// {
// Application.Run(new FrmMain());
// }
//login form1 = new login ();
//form1.Close();
//FrmMain form2 = new FrmMain ();
//form2.Show();
}
else
{
MessageBox.Show("你的用户名或密码不正确,请重新输入!");
return;
}
}
public static string StringToMD5Hash(string inputString)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(inputString));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
return sb.ToString
}
{
string cl1 = str1;
string pwd = "";
MD5 md5 = MD5.Create();
// 加密后是一个字节类型的数组
byte[] s=md5.ComputeHash(Encoding.Unicode.GetBytes(cl1));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for(int i = 0 ; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
pwd = pwd + s[i].ToString("x");
}
return pwd;
}
protected string UserMd5(string str1)
{
string cl1 = str1;
string pwd = " ";
MD5 md5 = MD5.Create();
// 加密后是一个字节类型的数组
byte[] s=md5.ComputeHash(Encoding.Unicode.GetBytes(cl1));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for(int i = 0 ; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
pwd = pwd + s[i].ToString( "x ");
}
return pwd;
}