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
}

 

目录
相关文章
|
2月前
|
数据安全/隐私保护
18、cookie注入(base64加密)
18、cookie注入(base64加密)
39 0
|
1月前
|
Java C# 数据安全/隐私保护
|
1月前
|
C#
【C#】C#读写Excel文件
【C#】C#读写Excel文件
28 1
|
23天前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
16 0
|
2月前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
2月前
|
数据安全/隐私保护
小课堂 -- cookie注入(base64加密)
小课堂 -- cookie注入(base64加密)
27 0
|
2月前
|
算法 C# 数据安全/隐私保护
C# | 上位机开发新手指南(十)加密算法——ECC
本篇文章我们将继续探讨另一种非对称加密算法——ECC。 严格的说,其实ECC并不是一种非对称加密算法,它是一种基于椭圆曲线的加密算法,广泛用于数字签名和密钥协商。 与传统的非对称加密算法(例如RSA)不同,ECC算法使用椭圆曲线上的点乘法来生成密钥对和进行加密操作,而不是使用大数分解等数学算法。这使得ECC算法具有相同的安全性和强度,但使用更少的位数,因此在资源受限的环境中具有优势。 ECC算法虽然使用公钥和私钥进行加密和解密操作,但是这些操作是基于点乘法实现的,而不是基于大数分解等算法实现的。因此,ECC算法可以被视为一种非对称加密算法的变体,但是它与传统的非对称加密算法有所不同。
165 0
C# | 上位机开发新手指南(十)加密算法——ECC
|
2月前
|
XML 算法 安全
C# | 上位机开发新手指南(九)加密算法——RSA
RSA的特性 非对称性 RSA算法使用公钥和私钥两个不同的密钥,公钥用于加密数据,私钥用于解密数据。公钥可以公开,任何人都可以使用,而私钥只有密钥持有人可以访问。 安全性 RSA算法基于大数分解难题,即将一个大的合数分解成其质数因子的乘积。由于目前没有有效的算法可以在合理的时间内对大质数进行分解,因此RSA算法被认为是一种安全的加密算法。 可逆性 RSA算法既可以用于加密,也可以用于解密。加密和解密都是可逆的过程,只要使用正确的密钥,就可以还原原始数据。 签名 RSA算法可以用于数字签名,用于验证数据的完整性和真实性。签名过程是将数据使用私钥进行加密,验证过程是将签名使用公钥进行解密。
136 0
C# | 上位机开发新手指南(九)加密算法——RSA
|
2月前
|
算法 搜索推荐 安全
C# | 上位机开发新手指南(八)加密算法——AES
AES——这是在加密算法中相当重要的一种加密方式! 虽然这个世界上已经存在了非对称加密算法(比如RSA、ECC等),但是在对称加密算法中,AES的地位依然相当重要。与非对称加密算法不同,对称加密算法使用的是相同的密钥对数据进行加密和解密,因此其加密和解密速度更快,而且更加高效。而在对称加密算法中,AES是目前最安全、最可靠的加密算法之一,其加密强度和运行效率都非常高。因此,无论是在个人计算机、移动设备,还是在服务器和云计算等领域,AES都被广泛应用于数据的加密和解密过程中。
146 0
C# | 上位机开发新手指南(八)加密算法——AES
|
2月前
|
存储 算法 安全
C# | 上位机开发新手指南(七)加密算法
加密算法是信息安全领域中的重要技术之一,可以保护数据在传输、存储和处理过程中的安全性。 学习加密算法可以帮助我们更好地理解和应用其他相关技术。例如,数字证书、数字签名、安全协议等都与加密算法密切相关,掌握加密算法可以为我们理解和应用这些技术提供帮助。
76 0
C# | 上位机开发新手指南(七)加密算法