我现在给问号后面参数用的是Server.UrlEncode(txtShowType.Text)(我传的参数是中文);   在IE的浏览器中显示出来的都是加密了的字符串;可是在火狐中还是显示出来了,我传递的那个真实值;各位大虾们请问一下这个是怎么回事呢??

解决方案 »

  1.   

    你换个别的url 转换的试试,比如说用 js 的
      

  2.   

    中文加密算法  再处理一下
    http://www.codesky.net/article/doc/201004/2010041706540.htm
      

  3.   

    尽量保证不要传递中文传递的时候要Server.UrlEncode(txtShowType.Text)接收的时候要Server.UrlDecode(txtShowType.Text)
      

  4.   

    因为你那根本不叫加密...只不过是URL编码而已,有些浏览器能根据本地语言包自动解码...
      

  5.   

    对啊,我是这么做的,可是如果用火狐浏览器的话,我的URl地址栏里面的加密参数还是原来的真实值!
      

  6.   

    悲剧的孩子  你换成 Js  加密试一试   网上搜索一大堆    就搜  Js加密
      

  7.   

    火狐下都能看清楚UrlEncode() 。
    找下加密解密的方法 .
      

  8.   

    如果你是拿参数的话,直接Request["参数名"]就行,不用Server.UrlDecode(txtShowType.Text),请问你是用来干什么的
      

  9.   

    .net不是有现成的MD5加密算法?
      

  10.   

    UrlEncode的使用是为了???
    你得仔细看看MSDN才行啊,因为这个方法不是用来加密的?
    只是一种简单的转换浏览器
    比如“空格”在IE里面会自动转换成20%
      

  11.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Security.Cryptography;
    using System.IO;    /// <summary>
        /// 加密字符
        /// </summary>
        /// <param name=pToEncrypt>加密字符串</param>
        /// <param name=skey>加密密钥</param>
        /// <returns>返回加密</returns>
       public  class DescMD5
        {
           public static  string skey = "abcdefgh";        public string Skey
            {
                get { return skey; }
                set { skey = value; }
            }
           /// <summary>
           /// 加密函数
           /// </summary>
           /// <param name="pToEncrypt"></param>
           /// <returns></returns>
           public  string EnCrypt(string pToEncrypt)
           {
               //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象
               DESCryptoServiceProvider des = new DESCryptoServiceProvider();
               des.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(skey);//建立加密对象的密钥和偏移量
               des.IV = ASCIIEncoding.ASCII.GetBytes(skey); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
               byte[] inputbyteArray = Encoding.Default.GetBytes(pToEncrypt);//把字符串放到byte数组中
               MemoryStream ms = new MemoryStream();//创建其支持存储区为内存的流 
              
               CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
               cs.Write(inputbyteArray, 0, inputbyteArray.Length);
               cs.FlushFinalBlock();//上面已经完成了把加密后的结果放到内存中去
               StringBuilder ret = new StringBuilder();
               foreach (byte b in ms.ToArray())
               {
                   ret.AppendFormat("{0:X2}", b);
                
               
               }
               return ret.ToString();       }
           
                       /// <summary>
           /// 解密ESC函数
           /// </summary>
           /// <param name="pToDecrypt">被解密的字符串</param>
           /// <param name="sKey">密钥(只支持8个字节的密钥,同前面的加密密钥相同)</param>
           /// <returns>返回被解密的字符串</returns>       public  string DeCrypt(string pToDecrypt)
           {           DESCryptoServiceProvider des = new DESCryptoServiceProvider();
           
               byte []inputbyteArray=new byte[pToDecrypt.Length/2];
               for (int i = 0; i < pToDecrypt.Length / 2; i++)
               {
                   int x = Convert.ToInt32(pToDecrypt.Substring(i * 2, 2), 16);               inputbyteArray[i] = (byte)x;
               
               }
               des.Key = ASCIIEncoding.ASCII.GetBytes(skey);
               des.IV = ASCIIEncoding.ASCII.GetBytes(skey);
               MemoryStream ms = new MemoryStream();
               CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
               cs.Write(inputbyteArray, 0, inputbyteArray.Length);
               cs.FlushFinalBlock();
               return System.Text.Encoding.Default.GetString(ms.ToArray());       }       public DescMD5() { }    }