GridView郁闷了一个下午的代码

njutfyj 2009-11-19 03:05:49
我有一个GridView控件,绑定了一个User数据表,现在我想点击某行的编辑按钮,可以对某行的数据进行修改(先可以修改并存进User表),但是我想在密码修改后点更新按钮程序自动对密码进行32位MD5加密存进数据表User
编辑按钮源代码如下:(现密码不能加密)
 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string ID = GridView1.DataKeys[e.RowIndex].Value.ToString();
string UserName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
string UserRealName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
string RoleID = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
string sqlStr = "update tb_User set UserName='" + UserName + "',UserPwd='" + UserPwd + "',UserRealName='" + UserRealName + "',RoleID='"+ RoleID+"' where UserID=" + ID + "";
DbHelperSQL.DbHelperSQL.ExecuteSql(sqlStr);
GridView1.EditIndex = -1;
}
...全文
257 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wiki14 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 xianghongai 的回复:]


那要是判断输入密码是否正确怎么办?
[/Quote]

把输入的密码再次调用加密方法,然后去和数据库的相匹配
wiki14 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 njutfyj 的回复:]
我用设断点的方法跟踪UserPwd 时已经加密了也存到数据表里了,为什么在gridview中显示的密码还是未加密的呢郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷
[/Quote]

先全部重新生成一下。
不然那就断点检查你的数据库读取了。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mzjmicrosoft 的回复:]
引用 3 楼 njutfyj 的回复:
如何加密呢大侠


这样

C# code//MD5加密publicstaticstring MD5(string str,int code)
{if (code==16)//16位 {return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16);
}else//32位 {return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
}
}

SQL code/*
-- "insert into xxx(xxx,xxx) values('" + TextBox1.Text.ToString()
-- + "','" + MD5(TextBox2.Text.ToString(), 32) + "')"*/
[/Quote]

那要是判断输入密码是否正确怎么办?
njutfyj 2009-11-19
  • 打赏
  • 举报
回复
谁来救救我啊
njutfyj 2009-11-19
  • 打赏
  • 举报
回复
我用设断点的方法跟踪UserPwd 时已经加密了也存到数据表里了,为什么在gridview中显示的密码还是未加密的呢郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷
alianghao 2009-11-19
  • 打赏
  • 举报
回复
一般修改加密的密码是要判断的。如果修改了密码就要加密。如果密码没有修改。就不要加密了。呵呵
mzjmicrosoft 2009-11-19
  • 打赏
  • 举报
回复
加断点看下 UserPwd这行

不可能的, 你一步一步看值
DistantPlace 2009-11-19
  • 打赏
  • 举报
回复
直接调用Md5加密方法进行加密

public string GetMD5(string pass)
{

MD5 md5 = MD5.Create();
string result = "";
byte[] data = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(pass));
for (int i = 0; i < data.Length; i++)
{
result += data[i].ToString("x2");
}
return result;
}
njutfyj 2009-11-19
  • 打赏
  • 举报
回复
朋友我试过了没有用啊
  
string UserPwd = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
UserPwd = MD5(UserPwd, 32);
zqtoo 2009-11-19
  • 打赏
  • 举报
回复
using System.Security.Cryptography;
zqtoo 2009-11-19
  • 打赏
  • 举报
回复
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string ID = GridView1.DataKeys[e.RowIndex].Value.ToString();
string UserName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
string UserRealName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
string RoleID = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
string sqlStr = "update tb_User set UserName='" + UserName + "',UserPwd='" + Hash(UserPwd) + "',UserRealName='" + UserRealName + "',RoleID='"+ RoleID+"' where UserID=" + ID + "";
DbHelperSQL.DbHelperSQL.ExecuteSql(sqlStr);
GridView1.EditIndex = -1;
}

protected string Hash(string toHash)
{
MD5CryptoServiceProvider crypto = new MD5CryptoServiceProvider();
byte[] bytes = Encoding.UTF7.GetBytes(toHash);
bytes = crypto.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
foreach (byte num in bytes)
{
sb.AppendFormat("{0:x2}", num);
}
return sb.ToString();
}
mzjmicrosoft 2009-11-19
  • 打赏
  • 举报
回复
就照我那个写,写个加密的方法

然后调用就可以了
njutfyj 2009-11-19
  • 打赏
  • 举报
回复
string UserPwd = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
UserPwd=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(UserPwd, "MD5").ToLower();

我是这么写的没用啊
mzjmicrosoft 2009-11-19
  • 打赏
  • 举报
回复
其实 那32 16都忽悠人的


那个都可以,现在这机器没一点问题的
mzjmicrosoft 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 njutfyj 的回复:]
如何加密呢大侠
[/Quote]

这样


//MD5加密
public static string MD5(string str, int code)
{
if (code == 16)//16位
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
}
else//32位
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
}
}



/*
-- "insert into xxx(xxx,xxx) values('" + TextBox1.Text.ToString()
-- + "','" + MD5(TextBox2.Text.ToString(), 32) + "')"
*/
ivws_19 2009-11-19
  • 打赏
  • 举报
回复
MD5加密查一下就行了
andrewsway 2009-11-19
  • 打赏
  • 举报
回复
添加用户的时候用的什么加密算法,这个地方还用一样的就可以了
njutfyj 2009-11-19
  • 打赏
  • 举报
回复
如何加密呢大侠
ivws_19 2009-11-19
  • 打赏
  • 举报
回复
那就在事件里对UserPwd先加密,加密后再执行SQL
yuanpengzhan8 2009-11-19
  • 打赏
  • 举报
回复
呵呵~~,不错哦

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧