如我想把
.aspx?city=1&keyword=AC
这样的传值的时候显示例如为
.aspx?sdfskdfjsldjfoielsdf
也就是后面全为乱码的形式
然后再后台用什么方法来读取如
String City=?????("City").ToString();
String Keyword=?????("Keyword").ToString();就像我现在用DES加密也只能做到.aspx?city=sdfsdf&keyword=sdfsdfsd
像这样的
但这样还是一眼就看来传了city  keyword

解决方案 »

  1.   

    使用.NET加密QueryStrings 教程,解释和完全代码http://www.devcity.net/PrintArticle.aspx?ArticleID=47
      

  2.   

    网上现成的using System;
    using System.Web;
    using System.Web.UI;
    using System.IO;
    using System.Security;
    using System.Security.Cryptography;
    using System.Configuration;
    public class DataProtection
    {
    public static RSACryptoServiceProvider rsa;
    public static void AssignParameter()
    {
    const int PROVIDER_RSA_FULL = 1;
    const string CONTAINER_NAME = "NMTechnology";
    CspParameters cspParams;
    cspParams = new CspParameters(PROVIDER_RSA_FULL);
    cspParams.KeyContainerName = CONTAINER_NAME;
    cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
    cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
    try
    {
    rsa = new RSACryptoServiceProvider(cspParams);
    }
    catch
    {
    string x = "X";
    }
    }
    public static string Encrypt(string data2Encrypt)
    {
    AssignParameter();
    StreamReader reader = new
    StreamReader(ConfigurationManager.AppSettings["PublicKey"].ToString());
    string publicOnlyKeyXML = reader.ReadToEnd();
    rsa.FromXmlString(publicOnlyKeyXML);
    reader.Close();
    //read plaintext, encrypt it to ciphertext
    byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
    byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
    return Convert.ToBase64String(cipherbytes);
    }
    public static void AssignNewKey()
    {
    AssignParameter();
    //provide public and private RSA params
    StreamWriter writer = new
    StreamWriter(ConfigurationManager.AppSettings["PrivateKey"].ToString());
    string publicPrivateKeyXML = rsa.ToXmlString(true);
    writer.Write(publicPrivateKeyXML);
    writer.Close();
    //provide public only RSA params
    writer = new
    StreamWriter(ConfigurationManager.AppSettings["PublicKey"].ToString());
    string publicOnlyKeyXML = rsa.ToXmlString(false);
    writer.Write(publicOnlyKeyXML);
    writer.Close();
    }
    public static string Decrypt(string data2Decrypt)
    {
    AssignParameter();
    byte[] getpassword = Convert.FromBase64String(data2Decrypt);
    StreamReader reader = new
    StreamReader(ConfigurationManager.AppSettings["PrivateKey"].ToString());
    string publicPrivateKeyXML = reader.ReadToEnd();
    rsa.FromXmlString(publicPrivateKeyXML);
    reader.Close();
    //read ciphertext, decrypt it to plaintext
    byte[] plain = rsa.Decrypt(getpassword, false);
    return System.Text.Encoding.UTF8.GetString(plain);
    }
    }
      

  3.   

    HttpModule方式
    http://www.madskristensen.dk/blog/CommentView,guid,a6a478df-245a-4cd8-a3cc-80bb8c9c8004.aspxhttp://www.madskristensen.dk/blog/content/binary/QueryStringModule.zip
      

  4.   

    一个规则:
    如果数据是敏感的,那么请放到session中而不是查询字符串中。
      

  5.   

    在一般应用下,不需要任何加密——只要你不传递内容即可。例如,要传递一个对象集合
      object[] theParam=new object[]{......};在创建并输出url的页面可以写:  string pid=theParam.GetHashCode().ToString();
      Cache.Insert(pid,theParam);
      string url="......aspx?pid="+pid;在接收页面可以写:  object[] params=Cache[Request.QueryString["pid"]];只要一个参数,传递多少数据都可以,并且在url上的一个很短的编号,又快又“保密”。
      

  6.   

    只要你不传递内容即可  -->  只要你传递内容时仅在客户端显示随机id编号而不显示内容即可
      

  7.   

    同样,使用cookie时往往仅需要在客户端保存一个id,其它的保存在后台某个地方(单个web或者web群是无所谓的)即可,也是又快又保密,无需加密。
      

  8.   

    照net_lover(【孟子E章】)上贴的方法这样
    如我用方法在传的时候
    url=".aspx"+MyEncode("City=1&keyword=abc");      //MyEncode进行Des加密
    取的时候
    String Param=MyUnCode(??);
    ...这里取City 和 keyword的值
    这样的话应该别人看不出是什么东西问的是如何取出.aspx?city=1&keyword=abc中的city=1&keyword=abc还有这样写可不可以
      

  9.   

    问的是如何取出.aspx?city=1&keyword=abc中的city=1&keyword=abc
    ==>Request.QueryString.ToString()
      

  10.   

    把 city 和 keyword 等等放在服务器端object[]变量里,直接传递此变量的id,这样就无需耗费加密解密事件,而且可以传递很大的参数,例如DataTable。
      

  11.   

    这样就无需耗费加密解密时间,而且可以传递各种强类型、尺寸超过命令行的参数。也无需担心“还是一眼就看来传了city  keyword”。最重要的,这是对整个问题而考虑的,而不是只涉及一点点无关功能。
      

  12.   

    “如何取出 .aspx?city=1&keyword=abc中的city=1&keyword=abc”这个应该是逻辑设计问题。你写死了这种“需求”,这不是从业务出发的合理做法。
      

  13.   

    你可以把问号后面的一起用DES加密,然后在接受页分析字符串结构
      

  14.   

    把需要的值放入DataTable中,然后把这个DataTable当作sesseion传过去
      

  15.   

    你可以把问号后面的一起用DES加密,然后在接受页分析字符串结构
    ---------------------
    同意