整理封装的加密解密类,使用DES

using System;

using System.Security;
using System.Security.Cryptography;
using System.IO;
namespace TexSelect
{
    
/// <summary>
    
/// 加密解密类
    
/// </summary>

    public class DESCoding
    
{
        
public DESCoding()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }

        
/// <summary>
        
/// 密钥,已经赋默认值,可改
        
/// </summary>

        private string key_64="VavicApp";
        
/// <summary>
        
/// 密钥,已经赋默认值,可改
        
/// </summary>

        private string iv_64="VavicApp";

        
/// <summary>
        
/// 密钥
        
/// </summary>

        public string KEY_64
        
{
            
get{return key_64;}
            
set{key_64=value;}
        }

        
/// <summary>
        
/// 密钥
        
/// </summary>

        public string IV_64
        
{
            
get{return iv_64;}
            
set{iv_64=value;}
        }


        
/// <summary>
        
/// 加密方法
        
/// </summary>
        
/// <param name="data">要加密的字符串</param>
        
/// <param name="KEY_64">密钥</param>
        
/// <param name="IV_64">密钥</param>
        
/// <returns>加密后的字符串</returns>

        public string Encode(string data,string KEY_64,string IV_64)
        
{
            
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);
        }

        
/// <summary>
        
/// 加密方法
        
/// </summary>
        
/// <param name="data">要加密的字符串</param>
        
/// <returns>加密后的字符串</returns>

        public string Encode(string data)
        
{
            
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(this.KEY_64);
            
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(this.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);
        }


        
/// <summary>
        
/// 解密方法
        
/// </summary>
        
/// <param name="data">要解密的字符串</param>
        
/// <param name="KEY_64">密钥</param>
        
/// <param name="IV_64">密钥</param>
        
/// <returns>解密后的字符串</returns>

        public string Decode(string data,string KEY_64,string IV_64)
                             
        
{   
            
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();
        }

        
/// <summary>
        
/// 解密方法
        
/// </summary>
        
/// <param name="data">要解密的字符串</param>
        
/// <returns>解密后的字符串</returns>

        public string Decode(string data)
                             
        
{   
            
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(this.KEY_64);
            
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(this.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();
        }

    }



}

添加了两个密钥属性,可以自定义赋值,也可以使用自带的默认密钥,使用默认的密钥可以使用简单的加密解密方法,省事.

原文地址:https://www.cnblogs.com/telephoner/p/236976.html