AES加密在Socket通讯中经常会用到.现分享一个ASE加密解密类库.
先看看测试 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AESLib;
namespace AESTest
{
public class Program
{
static void Main(string[] args)
{
//静态加解密测试(每一次用的密码都是一样的)->(ABSEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDDD)
Console.WriteLine("静态密码测试加密解密===========================================");
AESTool aestool_static = new AESTool("ABSEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDDD",-1,false);//ABSEDEEE为key
string mingwen = "---Aonaufly-我-----%%";
Console.WriteLine("加密明文 : {0}", mingwen);
string miwen = aestool_static.Encrypt(mingwen);
Console.WriteLine("得到密文 : {0}", miwen);
Console.WriteLine("得到明文 : {0}", aestool_static.Decrypt(miwen));
//动态加解密测试(推荐使用)( 每一次用的密码可能都是不一样的)->( dynamic_key 动态密码(下次可以更改) )
Console.WriteLine("\n");
Console.WriteLine("动态密码测试加密解密(推荐使用 -> 优点 : 安全性更高 , 缺点 : 加密产生的字节多,效率没有静态的高)===========================================");
AESTool aestool_dynamic = new AESTool("我---Aonaufly%%", -1, true);//"我---Aonaufly%%"为动态随机密码与"ACGF~%"进行组合,保密性更强
string dynamic_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>
private char RondomFillKey2Dynamic
{
get
{
int len = dynamic_key_random.Length;
char[] arr = dynamic_key_random.ToArray<char>();
Random rdm = new Random(Guid.NewGuid().GetHashCode());//Guid.NewGuid().GetHashCode() 随机种子
return arr[rdm.Next(0, len)];
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。