C#中cookie读写加密中文字符

简介: 代码 //加密  CookiesResponse.Cookies["askCRM"]["USERID"] = Tools.Encrypt(strUserName.Trim(), Tools.myKey);//解密string strUid = Request.
img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
// 加密  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
}

 

目录
相关文章
|
数据安全/隐私保护
18、cookie注入(base64加密)
18、cookie注入(base64加密)
84 0
|
5月前
|
物联网 数据处理 C#
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
878 82
|
9月前
|
存储 安全 算法
C#一分钟浅谈:数据加密与解密技术
【10月更文挑战第3天】在数字化时代,信息安全至关重要。数据加密作为保障信息不被未授权访问的有效手段,通过特定算法将明文转换为密文,确保即使数据被截获也难以解读。本文从基础概念入手,介绍C#中实现数据加密的方法,涵盖对称加密(如AES、DES)与非对称加密(如RSA),并通过具体示例代码演示如何使用`System.Security.Cryptography.Aes`类完成AES加密和解密过程。此外,还强调了密钥管理及安全策略的重要性。
183 4
|
9月前
|
JavaScript 数据安全/隐私保护
马蜂窝 cookie 加密(加速乐)
本文介绍了一次针对马蜂窝网站的逆向工程过程,旨在学习交流,不提供完整代码及敏感信息。文中详细描述了三次GET请求的过程,通过抓包工具分析了请求头和响应内容,并逐步解析了`cookie`参数的生成方法。最终通过携带特定`cookie`成功获取页面内容。严禁将本文内容用于非法或商业用途,违者自行承担一切后果。未经许可不得转载或修改后传播。
238 0
|
11月前
|
Java C# 数据安全/隐私保护
如何 使 Java、C# md5 加密的值保持一致
如何 使 Java、C# md5 加密的值保持一致
195 0
|
11月前
|
C# 图形学 数据安全/隐私保护
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
|
11月前
|
数据采集 JavaScript 前端开发
同花顺股票数据逆向:Cookie加密和Hook注入
同花顺股票数据逆向:Cookie加密和Hook注入
935 0
|
Java C# 数据安全/隐私保护
【C#】C#读写Excel文件
【C#】C#读写Excel文件
297 1
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
265 0

热门文章

最新文章