日期:2014-05-17  浏览次数:20893 次

asp.net密码加密后老出错,求解啊
这是一个按钮,验证textbox1与textbox2的账号密码,然后登陆。
但是我将textbox2的值进行Getmd5处理后报错,说var转换int失败,怎么回事啊?
直接string passWord = this.TextBox2.Text.Trim();不会报错。

public string GetMD5(string strPwd)
    {
        string pwd = "";
        //实例化一个md5对象
        MD5 md5 = MD5.Create();
        // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
        byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(strPwd));
        //翻转生成的MD5码        
        s.Reverse();
        //通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
        //只取MD5码的一部分,这样恶意访问者无法知道取的是哪几位
        for (int i = 3; i < s.Length - 1; i++)
        {
            //将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
            //进一步对生成的MD5码做一些改造
            pwd = pwd + (s[i] < 198 ? s[i] + 28 : s[i]).ToString("X");
        }
        return pwd;
    }
protected void Button1_Click(object sender, EventArgs e)
    {
        //实例化公共类对象
        DB db = new DB();
        string userName = this.TextBox1.Text.Trim();
        string passWord = db.GetMD5(this.TextBox2.Text.Trim());//对密码进行加密处理md5处理后的密码
        
        //经过测试可以成功登陆的
        //string passWord = this.TextBox2.Text.Trim();
        string num = this.TextBox3.Text.Trim();
        //如果保存的验证码与输入的验证码相同
        if (Session["ValidateNum"].ToString() == num.ToUpper())
        {
            //获取用户信息
            SqlDataReader dr = db.reDr("select * from student where name='" + userName + "' and password='" + passWord + "'");
            // SqlDataReader 前进到下一条记录。
            //SqlDataReader 的默认位置在第一条记录前面。 因此,必须调用 Read 来开始访问任何数据。
            //对于每个关联的 SqlConnection,一次只能打开一个 SqlDataReader,在第一个关闭之前,
            //打开另一个的任何尝试都将失败。 类似地,在使用 SqlDataReader 时,关联的&