加密 Cookies

Response.Cookies["askCRM"]["USERID"] = Tools.Encrypt(strUserName.Trim(), Tools.myKey);

解密

string strUid = Request.Cookies["askCRM"]["USERID"];

strUid = Tools.Decrypt(strUid, Tools.myKey);

加密解密 掉用的方法

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Security.Cryptography;

using System.IO;

using System.Text;

/// <summary>

/// Tools 的摘要说明

/// </summary>

public class Tools

{

/// <summary>

/// 当前程序加密所使用的密钥

/// </summary>

public static readonly string myKey = "q0m3sd8l";

#region 加密方法

/// <summary>

/// 加密方法

/// </summary>

/// <param name="pToEncrypt">需要加密字符串</param>

/// <param name="sKey">密钥</param>

/// <returns>加密后的字符串</returns>

public static string Encrypt(string pToEncrypt, string sKey)

{

try

{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

//把字符串放到byte数组中

//原来使用的UTF8编码,我改成Unicode编码了,不行

byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);

//建立加密对象的密钥和偏移量

//使得输入密码必须输入英文文本

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

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();

}

catch (Exception ex)

{

JS.Alert("写入配置信息失败,详细信息:" + ex.Message.Replace("/r/n", "").Replace("'", ""));

}

return "";

}

#endregion

#region 解密方法

/// <summary>

/// 解密方法

/// </summary>

/// <param name="pToDecrypt">需要解密的字符串</param>

/// <param name="sKey">密匙</param>

/// <returns>解密后的字符串</returns>

public static string Decrypt(string pToDecrypt, string sKey)

{

try

{

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();

//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象

StringBuilder ret = new StringBuilder();

return System.Text.Encoding.Default.GetString(ms.ToArray());

}

catch (Exception ex)

{

JS.Alert("读取配置信息失败,详细信息:" + ex.Message.Replace("/r/n", "").Replace("'", ""));

}

return "";

}

#endregion

}