AppEncrypts helper.提供加密解密的一個通用類

 

在.NET中,我們可以直接使用System.Security.Cryptography空間中的通過加密/解密類進行操作.
這幾天在玩數據加密的時候用到了.
感覺用起來不是很方便.
於是寫了一個通用(hoho,算是比較通用的吧)的加密/解密的類.
現在只完成了對稱加密類的封裝.
代碼:

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace CnBlogs.Helper.hBifTs
{

    
#region AppEncrypt
    
/// <summary>
    
/// AppEncrypt : 抽象類,用於提供加密/解密類的基本功能.
    
/// </summary>

    public abstract class AppEncrypt : IDisposable{
        
#region Private variable & propery
        
protected byte[] key;
        
protected byte[] iv;

        
protected ICryptoTransform CryptoTrans;
        
protected SymmetricAlgorithm CryptObj;

        
public byte[] Key{
            
getreturn key;}
            
set{ key = value;}
        }


        
public byte[] IV
        
{
            
getreturn iv;}
            
set{ iv = value;}
        }


        
public AppEncrypt(byte[] Key,byte[] IV){
            key 
= Key;
            iv 
= IV;
        }

        
#endregion


        
Dispose

        
Common Function
    }

    
#endregion


    
DESEncrypt

    
TripleDESEncrypt

    
RC2Encrypt

    
RijndaelEncrypt
}



使用只要直接調用基類的Encrypt和Dencrypt函數即可..
測試用例如下:
using System;
using System.IO;
using System.Text;
using CnBlogs.Helper.hBifTs;
using NUnit.Framework;


namespace CnBlogs.Helper.hBifTs.TestCases
{
    
/// <summary>
    
/// Summary description for TestAppEncrypt.
    
/// </summary>
    
/// 

    [TestFixture]
    
public class TestAppEncrypt
    
{
        
private AppEncrypt enc;
        
private MemoryStream mem;

        
public TestAppEncrypt()
        
{
        }


        [SetUp] 
public void Setup(){
            
byte[] msg = Encoding.Unicode.GetBytes("hello,I got the new world,豬啊..");
            mem 
= new MemoryStream( msg);
        }


        [TearDown] 
public void TearDown(){
            mem.Close();
        }


        
public void Common(){
            Stream dest 
= new MemoryStream();
            enc.Encrypt( mem,
ref dest);
            Stream dest1 
= new MemoryStream( ((MemoryStream)dest).ToArray());
            Stream dest2 
= new MemoryStream();
            enc.Dencrypt( dest1,
ref dest2);
            Assert.AreEqual( Encoding.Unicode.GetString(mem.ToArray()),Encoding.Unicode.GetString(((MemoryStream)dest2).ToArray()));
        }


        [Test] 
public void TestDES(){
            enc 
= new DESEncrypt();
            Common();
        }


        [Test] 
public void TestTripleDES(){
            enc 
= new TripleDESEncrypt();
            Common();
        }


        [Test] 
public void TestRC2(){
            enc 
= new RC2Encrypt();
            Common();
        }


        [Test] 
public void TestRijndael(){
            enc 
= new RijndaelEncrypt();
            Common();
        }

    }

}


靈感之源的要求,提供代碼下載: AppEncrypts.zip
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1353526

發佈了3 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章