focus 专栏

--专注于.NET Web开发技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#实现Des加密和解密

Posted on 2007-01-24 23:28  focus  阅读(304)  评论(0编辑  收藏  举报
using System;
using System.IO;
using System.Security.Cryptography;

namespace Vavic
{
    
/// <summary>
    
/// Security 的摘要说明。
    
/// </summary>

    
public class Security
    {
        
const string KEY_64 = "VavicApp";
        
const string IV_64 = "VavicApp"//注意了,是8个字符,64位

        
public Security()
        {
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }
 
        
public static 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 static 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();
        }
    }
}