使用手工加密加密Cookie的问题(ASP.NET)

时间:2009-05-13 04:34:45

标签: c# asp.net

我面临一个奇怪的问题:

我正在加密cookie的内容。

我在Visual Studio中运行代码时工作正常,但是给我一个“错误请求,HTTP错误400.请求形成错误。”当我从服务器运行它时。

以下是加密类Cookqs的加密类,位于app_code:

public class EncryptCook
{
public EncryptCook()
{
    //
    // TODO: Add constructor logic here
    //
}

public  string EncryptString(string data)
{
    try
    {
        string encryptString = "";
        if (data != "")
        {
            char a;
            int key = Convert.ToInt16(DateTime.Now.Day);
            int j = 0;

            for (int i = 0; i < data.Length; i++)
            {

                j = (int)data[i];
                j = j + key;
                a = (char)j;
                encryptString = encryptString + Convert.ToString(a);

            }
        }
        return encryptString;
    }
    catch
    {
        return "";
    }
}

public   string DeEncryptString(string data)
{
    try
    {
        string encryptString = "";
        if (data != "")
        {

            char a;
            int j = 0;
            int key = Convert.ToInt16(DateTime.Now.Day);
            for (int i = 0; i < data.Length; i++)
            {

                j = (int)data[i];
                j = j - key;
                a = (char)j;
                encryptString = encryptString + Convert.ToString(a);

            }
        }
        return encryptString;
    }
    catch
    {
        return "";
    }

}

非常简单,它需要一个字符串,从中提取字符并将字符替换为另一个字符,例如,给定“a”并且今天的日期为13,它将替换为“a”之后的第13个字符,即“m”。

这是我的登录控件:

protected void Button1_Click(object sender, EventArgs e)
{
//code for retrieving user, which works fine
EncCook cook=new EncCook();
HttpCookie cookie = new HttpCookie("loginstatus");
            cookie["userid"] =cook.EncryptString(name);
            cookie["username"] = cook.EncryptString(doctor);
            cookie["email"] = cook.EncryptString(email);
            cookie["address"] = cook.EncryptString(address);
 Response.Cookies.Add(cookie);
}

好吧,这段代码在本地机器上工作正常,但是给我一个“错误请求HTTP错误400.请求形成错误。”错误。

我认为这是因为编码,但我不确定,就像今天的20,那么〜+ 20看起来就像一个盒子角色。

由于

1 个答案:

答案 0 :(得分:7)

请不要使用自制加密。它只会以尴尬而告终。如果你捕获异常,你应该重新抛出它或返回null,而不是空字符串。该错误可能是因为您所谓的加密正在创建在当前字符集中无效的字节序列。