url 怎么加密?

解决方案 »

  1.   

    百度    google   
      

  2.   

    http://hi.baidu.com/bluelight68/blog/item/7c62037ade389dfc0bd18756.html 看下这个
      

  3.   

    实现Web系统URL传输(表单提交)参数加密。例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts.aspx?ID=2 
    但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID。    --------------------------------------------------------------------------------   using System; 
    using System.Security.Cryptography; 
    using System.IO; 
    using System.Text; namespace EIP.Framework 
    ...{ 
    public class Security 
    ...{ 
    string _QueryStringKey = "abcdefgh"; //URL传输参数加密Key 
    string _PassWordKey = "hgfedcba"; //PassWord加密Key public Security() 
    ...{ 
    } public string EncryptQueryString(string QueryString) 
    ...{ 
    return Encrypt(QueryString,_QueryStringKey); 

    public string DecryptQueryString(string QueryString) 
    ...{ 
    return Decrypt(QueryString,_QueryStringKey); 

    public string EncryptPassWord(string PassWord) 
    ...{ 
    return Encrypt(PassWord,_PassWordKey); 

    public string DecryptPassWord(string PassWord) 
    ...{ 
    return Decrypt(PassWord,_PassWordKey); 
    } /**////  
    /// DEC 加密过程 
    ///  
    ///  
    ///  
    ///  
    public string Encrypt(string pToEncrypt,string sKey)  
    ...{  
    DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //把字符串放到byte数组中  byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);  
    //byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);  des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量 
    des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法  
    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);  
    }  
    ret.ToString();  
    return ret.ToString();  
    }  /**////  
    /// DEC 解密过程 
    ///  
    ///  
    ///  
    ///  
    public string Decrypt(string pToDecrypt, string sKey)  
    ...{  
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();  byte[] inputByteArray = new byte[pToDecrypt.Length / 2];  
    for(int x = 0; x < pToDecrypt.Length / 2; x++)  
    ...{  
    int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));  
    inputByteArray[x] = (byte)i;  
    }  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();  StringBuilder ret = new StringBuilder(); //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象  return System.Text.Encoding.Default.GetString(ms.ToArray());  
    }  /**////  
    /// 检查己加密的字符串是否与原文相同 
    ///  
    ///  
    ///  
    ///  
    ///  
    public bool ValidateString(string EnString, string FoString, int Mode) 
    ...{ 
    switch (Mode) 
    ...{ 
    default: 
    case 1: 
    if (Decrypt(EnString,_QueryStringKey) == FoString.ToString()) 
    ...{ 
    return true; 

    else 
    ...{ 
    return false; 

    case 2: 
    if (Decrypt(EnString,_PassWordKey) == FoString.ToString()) 
    ...{ 
    return true; 

    else 
    ...{ 
    return false; 




    } 类中URL及帐号加密使用了不同的KEY。调用URL加密过程如下: 
    EIP.Framework.Security objSecurity = new EIP.Framework.Security(); 
    objSecurity.EncryptQueryString(''待加密的字符串''); 解密:objSecurity.DecryptQueryString(''传递过来的参数); 
      

  4.   

    Server.htmlEncode
    加密方法可用des等,还可使用HttpUtility.UrlEncode编码
    public string SHA1(string source)  
    {  
      return FormsAuthentication.HashPasswordForStoringInConfigFile(source, "SHA1");  
    }  
    public string MD5(string source)  
    {  
      return FormsAuthentication.HashPasswordForStoringInConfigFile(source, "MD5");;  
    }  
    public string Encode(string data)  
    {  
      byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);  
      byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();  
      int i = cryptoProvider.KeySize;  
      MemoryStream ms = new MemoryStream();  
      CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);    StreamWriter sw = new StreamWriter(cst);  
      sw.Write(data);  
      sw.Flush();  
      cst.FlushFinalBlock();  
      sw.Flush();  
      return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);  }  public string Decode(string data)  
    {  
      byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);  
      byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);    byte[] byEnc;  
      try  
      {  
      byEnc = Convert.FromBase64String(data);  
      }  
      catch  
      {  
      return null;  
      }    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();  
      MemoryStream ms = new MemoryStream(byEnc);  
      CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);  
      StreamReader sr = new StreamReader(cst);  
      return sr.ReadToEnd();  
    }  
    using System.Security.Cryptography;
    ...
    public string Encode(string data)
    {
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
    int i = cryptoProvider.KeySize;
    MemoryStream ms = new MemoryStream();
    CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
    StreamWriter sw = new StreamWriter(cst);
    sw.Write(data);
    sw.Flush();
    cst.FlushFinalBlock();
    sw.Flush();
    return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
    }
    public string Decode(string data)
    {
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    byte[] byEnc;
    try
    {
    byEnc = Convert.FromBase64String(data);
    }
    catch
    {
    return null;
    }
    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
    MemoryStream ms = new MemoryStream(byEnc);
    CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
    StreamReader sr = new StreamReader(cst);
    return sr.ReadToEnd();
    }private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };  
    public static string EncryptDES(string encryptString, string encryptKey)  
    {  
      try  
      {  
      byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));  
      byte[] rgbIV = Keys;  
      byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);  
      DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();  
      MemoryStream mStream = new MemoryStream();  
      CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);  
      cStream.Write(inputByteArray, 0, inputByteArray.Length);  
      cStream.FlushFinalBlock();  
      return Convert.ToBase64String(mStream.ToArray());  
      }  
      catch  
      {  
      return encryptString;  
      }  
    }  public static string DecryptDES(string decryptString, string decryptKey)  
    {  
      try  
      {  
      byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);  
      byte[] rgbIV = Keys;  
      byte[] inputByteArray = Convert.FromBase64String(decryptString);  
      DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();  
      MemoryStream mStream = new MemoryStream();  
      CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);  
      cStream.Write(inputByteArray, 0, inputByteArray.Length);  
      cStream.FlushFinalBlock();  
      return Encoding.UTF8.GetString(mStream.ToArray());  
      }  
      catch  
      {  
      return decryptString;  
      }  
    }   
      

  5.   


    baidu+google  很多的 呵呵 加油啊
      

  6.   

    有那么复杂吗?
    string url = Security.EncryptQueryString(txtName.Text.Trim());
     string URl = "http://www.123.com/User/default.aspx?N="Security.EncryptQueryString(txtName.Text.Trim());
    利用Security.EncryptQueryString这样不就可以了么
      

  7.   

    记得好像用 Server.URLEncode也可以,但只是对非数字有限
      

  8.   

    楼主 是要URL 传值 加密???
          #region 地址栏传值加密
            /// <summary>
            /// 地址栏传值加密
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            public static string EncryptFilename(string value)
            {
                if (!UtilityClass.IsNullOrEmpty(value))
                {
                    byte[] buffer = HttpContext.Current.Request.ContentEncoding.GetBytes(value);
                    value = Convert.ToBase64String(buffer).Replace('+', '@').Replace('/', '*');
                    int length = value.Length;
                    if (length > 3)
                    {
                        //确定需要分组的组数,按每3位分一组
                        int group = length / 3;
                        for (int i = 0, j = 3; i < group; i++, j = j + 3)
                        {
                            value = value.Insert(j + i, ",");
                        }
                        StringBuilder rebuildvalue = new StringBuilder(length);
                        string[] everygroup = value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        for (int i = everygroup.Length - 1; i >= 0; i--)
                            rebuildvalue.Append(everygroup[i]);
                        return rebuildvalue.ToString();
                    }
                }
                return value;
            }
            #endregion