Base-64 char数组或字符串的长度无效。 c#ASP.NET

时间:2016-01-26 06:28:21

标签: c# asp.net webforms

这是我的加密和解密类

 public class SharedUtility
    {
        public static String Encrypt(string strData)
        {
            if (strData != "")
            {
                strData = string.Format("{0}|{1}", HttpContext.Current.Session.SessionID, strData);
                SHA1Managed shaM = new SHA1Managed();
                Convert.ToBase64String(shaM.ComputeHash(Encoding.ASCII.GetBytes(strData)));
                Byte[] encByteData;
                encByteData = ASCIIEncoding.ASCII.GetBytes(strData);
                String encStrData = Convert.ToBase64String(encByteData);
                return encStrData;
            }
            else
            {
                return "";
            }

        }

        public static String Decrypt(string strData)
        {
            if (string.IsNullOrEmpty(strData) == false)
            {
                Byte[] decByteData;
                decByteData = Convert.FromBase64String(strData);
                String decStrData = ASCIIEncoding.ASCII.GetString(decByteData);

                String[] SplitValue = decStrData.Split('|');

                String ReturnValue = SplitValue[1];
                return ReturnValue;
            }
            else
            {
                return "";
            }

        } 

这是我的登录页码:

 protected void btnSign_Click(object sender, EventArgs e)
    {
        try
        {
            string UserName = TextBoxUserName.Text.Trim().Replace("'", " ");
            string Password = SharedUtility.Encrypt(TextBoxPassword.Text.Trim().Replace("'", " "));
            string Result = WebUsers.AuthenticateUser(UserName, Password);
            if (Result.Contains("Success"))
                Response.Redirect("~/Home/home.aspx", false);
            else
            {

                divResult.Visible = true;
                ResultLabel.Text = Result;
                ResultLabel.Visible = true;
            }
        }
        catch (Exception ex)
        {
            ResultLabel.Text = ex.Message;
        }
    }


}

但它通过以下错误:

Invalid length for a Base-64 char array or string.

注意:我也尝试修剪()。替换(“+”,“”);修剪()。替换(“”,“+”);

先生我是新手使用这样的专业模板,我尝试越来越多的时间,并尝试在网上搜索,但没有解决方案成功

 public static DataTable GetUserByUserName(string UserName)
    {
        try
        {
            string ConnectionString = ConfigurationManager.ConnectionStrings["AMLiveConnectionString"].ToString();
            SqlConnection conn = new SqlConnection(ConnectionString);
            SqlCommand cmd = new SqlCommand("WebUsers_GetUsersByUserName", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@UserName", UserName);

            DataTable DT = new DataTable();
            SqlDataAdapter Adapter = new SqlDataAdapter(cmd);
            Adapter.Fill(DT);
            return DT;

        }
        catch
        {
            throw;
        }
    }     

1 个答案:

答案 0 :(得分:0)

将您的代码更改为以下内容。希望它能起作用:

 public static DataTable GetUserByUserName(string UserName)
{
    DataTable DT = new DataTable();
    try
    {
        string ConnectionString = ConfigurationManager.ConnectionStrings["AMLiveConnectionString"].ToString();
        SqlConnection conn = new SqlConnection(ConnectionString);
        SqlCommand cmd = new SqlCommand("WebUsers_GetUsersByUserName", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@UserName", UserName);
        conn.Open();

        SqlDataAdapter Adapter = new SqlDataAdapter(cmd);
        Adapter.Fill(DT);
    }
    catch
    {
        throw;
    }
    finally{
        conn.Close();
        return DT;
    }
}     

更改是您未打开连接,并且您的返回应位于最终块中,而不是尝试