AES加密在Socket通讯中经常会用到.现分享一个ASE加密解密类库.


先看看测试 :

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingAESLib;namespaceAESTest{publicclassProgram{staticvoidMain(string[]args){//静态加解密测试(每一次用的密码都是一样的)->(ABSEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDDD)Console.WriteLine("静态密码测试加密解密===========================================");AESToolaestool_static=newAESTool("ABSEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDDD",-1,false);//ABSEDEEE为keystringmingwen="---Aonaufly-我-----%%";Console.WriteLine("加密明文:{0}",mingwen);stringmiwen=aestool_static.Encrypt(mingwen);Console.WriteLine("得到密文:{0}",miwen);Console.WriteLine("得到明文:{0}",aestool_static.Decrypt(miwen));//动态加解密测试(推荐使用)(每一次用的密码可能都是不一样的)->(dynamic_key动态密码(下次可以更改))Console.WriteLine("\n");Console.WriteLine("动态密码测试加密解密(推荐使用->优点:安全性更高,缺点:加密产生的字节多,效率没有静态的高)===========================================");AESToolaestool_dynamic=newAESTool("我---Aonaufly%%",-1,true);//"我---Aonaufly%%"为动态随机密码与"ACGF~%"进行组合,保密性更强stringdynamic_key="ACGF~%";//动态密码(下次可以更改)Console.WriteLine("加密明文:{0}",mingwen);miwen=aestool_dynamic.Encrypt_Key(mingwen,dynamic_key);Console.WriteLine("得到密文:{0}",miwen);Console.WriteLine("得到明文:{0}",aestool_dynamic.Decrypt_Key(miwen));Console.ReadKey();}}}

结果 :

如果对程序安全要求很高的话 , 建议使用动态的加解密方式.这样每一次的密码可能都不一样.非常的安全.


附如何产生随机种子( 在动态密码随机融合的时候用到 )

///<summary>///获得随机补充密码字符char,动态///</summary>privatecharRondomFillKey2Dynamic{get{intlen=dynamic_key_random.Length;char[]arr=dynamic_key_random.ToArray<char>();Randomrdm=newRandom(Guid.NewGuid().GetHashCode());//Guid.NewGuid().GetHashCode()随机种子returnarr[rdm.Next(0,len)];}}


附件:http://down.51cto.com/data/2366899