加密与解密

最近想要对连接字符串加密,就直接想到了加密字符串的方法,如下有示例一个:
先定义一个key与iv
private   string  key  =   " GroupPower " ;
private   string  iv  =   " AFaneTi " ;
再定义一个加密对象
private  RijndaelManaged mobjCryptoService  =   new  RijndaelManaged();
然后初始化Key与IV
///   <summary>
        
///  初始化密钥
        
///   </summary>
        
///   <returns> 密钥字节数组 </returns>
         private   byte [] GetLegalKey()
        {
            
string  result  =   "" ;
            mobjCryptoService.GenerateKey();
            
byte [] buff  =  mobjCryptoService.Key;
            
if  (key.Length  <  buff.Length)
            {
                result 
=  key.PadRight(buff.Length,  '   ' );
            }
            
else   if  (key.Length  >  buff.Length)
            {
                result 
=  key.Substring( 0 , buff.Length);
            }
            
else
            {
                result 
=  key;
            }
            
return  Encoding.ASCII.GetBytes(result);
        }  

        
///   <summary>
        
///  初始化向量IV
        
///   </summary>
        
///   <returns> IV向量字节数组 </returns>
         private   byte [] GetLegalIV()
        {
            
string  result  =   "" ;
            mobjCryptoService.GenerateIV();
            
byte [] buff  =  mobjCryptoService.IV;
            
if  (iv.Length  <  buff.Length)
            {
                result 
=  iv.PadRight(buff.Length,  '   ' );
            }
            
else   if  (iv.Length  >  buff.Length)
            {
                result 
=  iv.Substring( 0 , buff.Length);
            }
            
else
            {
                result 
=  iv;
            }
            
return  Encoding.ASCII.GetBytes(result);
        }  
下面是对称加密字符串
///   <summary>
        
///  对称加密字符串
        
///   </summary>
        
///   <param name="sourceStr"> 待加密的字符串 </param>
        
///   <returns> 加密后的字符串 </returns>
         public   string  EncryStr( string  sourceStr)
        {
            
byte [] bytIn  =  UTF8Encoding.UTF8.GetBytes(sourceStr);
            MemoryStream ms 
=   new  MemoryStream();
            mobjCryptoService.Key 
=  GetLegalKey();
            mobjCryptoService.IV 
=  GetLegalIV();
            ICryptoTransform encrypto 
=  mobjCryptoService.CreateEncryptor();
            CryptoStream cs 
=   new  CryptoStream(ms, encrypto, CryptoStreamMode.Write);
            cs.Write(bytIn, 
0 , bytIn.Length);
            cs.FlushFinalBlock();
            ms.Close();
            
byte [] bytOut  =  ms.ToArray();
            
return  Convert.ToBase64String(bytOut);
        }
对字符串解密
///   <summary>
        
///  对称解密字符串
        
///   </summary>
        
///   <param name="sourceStr"> 密文 </param>
        
///   <returns> 明文 </returns>
         public   string  DecryStr( string  sourceStr)
        {
            
try
            {
                
byte [] bytIn  =  Convert.FromBase64String(sourceStr);
                MemoryStream ms 
=   new  MemoryStream(bytIn,  0 , bytIn.Length);
                mobjCryptoService.Key 
=  GetLegalKey();
                mobjCryptoService.IV 
=  GetLegalIV();
                ICryptoTransform encrypto 
=  mobjCryptoService.CreateDecryptor();
                CryptoStream cs 
=   new  CryptoStream(ms, encrypto, CryptoStreamMode.Read);
                StreamReader sr 
=   new  StreamReader(cs);
                
return  sr.ReadToEnd();
            }
            
catch
            {
                
throw   new  Exception( " 源字符串格式不正确 " );
                
return   null ;
            }
        }  

转载于:https://www.cnblogs.com/wudingfeng/archive/2008/03/07/Encry.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值