.Net下的加密解密大全(5):玩转对称加密
来源:互联网 发布:linux中echo 编辑:程序博客网 时间:2024/05/18 18:14
上篇博文介绍了怎么玩转Hash算法,不过那篇文章没有交代清楚。这篇博文我将力争将那些没交代清楚的东东都说明白了。当然本文的主题是玩转对称加密。
.NET下的对称加密技术主要有这么几种:DES,AES,Rijndael,TripleDES(3DES)。现在就来玩转它们吧!与上篇博文一样,首先创建一个接口:“IEncryptAndDecrypt”,然后为DES,AES,Rijnael,TripleDES(3DES)建立对应的类并实现接口“IEncryptAndDecrypt”。它们的结果如下图:
这样我们在后期的编程中只需要简单的调用接口IEncryptAndDecrypt中的方法“Encrypt”和“Decrypt”就可以对数据进行加密解密啦。当然要实现这样的愿望我们还得继续努力,当前我的目标就是为它们找一个合格的lead,这样我们如果要找DES干活就可以直接对lead说,而不用满世界的去找咱们的DES。来瞧瞧咱们的Lead吧:
咱们来瞧瞧这个Lead的能耐吧,看看它是否能胜任它的工作:
EncryptAndDecryptInvoker leader;// = new EncryptAndDecryptInvoker(null, null); //执行环境 CryptogramSetting setting = new CryptogramSetting() { }; string data="快去干活"; byte[] bData;//加密处理前 byte[] aData;//机密处理后 byte[] tmp; Encoding encoding=System.Text.Encoding.UTF8; //叫DES干活 IEncrytAndDecrypt myDES = new DES(); setting.IV = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; setting.Key = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; setting.CryptogramType = CryptogramType.SymmetryEncryptAndDecrypt; //给lead发送要求 leader = new EncryptAndDecryptInvoker(myDES, setting); Console.WriteLine("DES:"); tmp=leader.Encrypt(encoding.GetBytes(data)); Console.WriteLine("加密:"+Convert.ToBase64String(tmp)); tmp = leader.Decrypt(tmp); Console.WriteLine("解密:" + encoding.GetString(tmp)); //叫AES干活 IEncrytAndDecrypt myAES = new AES(); setting.IV = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8,9,10,11,12,13,14,15,16 }; setting.Key = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 ,9,10,11,12,13,14,15,16}; setting.CryptogramType = CryptogramType.SymmetryEncryptAndDecrypt; //给lead发送要求 leader = new EncryptAndDecryptInvoker(myAES, setting); Console.WriteLine("AES:"); tmp = leader.Encrypt(encoding.GetBytes(data)); Console.WriteLine("加密:" + Convert.ToBase64String(tmp)); tmp = leader.Decrypt(tmp); Console.WriteLine("解密:" + encoding.GetString(tmp)); //叫Rijndael干活 IEncrytAndDecrypt myRijndael = new Rijndael(); setting.IV = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; setting.Key = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; setting.CryptogramType = CryptogramType.SymmetryEncryptAndDecrypt; //给lead发送要求 leader = new EncryptAndDecryptInvoker(myRijndael, setting); Console.WriteLine("Rijndael:"); tmp = leader.Encrypt(encoding.GetBytes(data)); Console.WriteLine("加密:" + Convert.ToBase64String(tmp)); tmp = leader.Decrypt(tmp); Console.WriteLine("解密:" + encoding.GetString(tmp)); //叫3DES干活 IEncrytAndDecrypt my3DES = new TripleDES(); setting.IV = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; setting.Key = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; setting.CryptogramType = CryptogramType.SymmetryEncryptAndDecrypt; //给lead发送要求 leader = new EncryptAndDecryptInvoker(my3DES, setting); Console.WriteLine("3DES:"); tmp = leader.Encrypt(encoding.GetBytes(data)); Console.WriteLine("加密:" + Convert.ToBase64String(tmp)); tmp = leader.Decrypt(tmp); Console.WriteLine("解密:" + encoding.GetString(tmp)); Console.ReadKey();
执行结果:
看来我们的lead还是很给力的嘛,完全胜任了它的操作。
- .Net下的加密解密大全(5):玩转对称加密
- .NET下的加密解密大全(2):对称加密
- .Net下的加密解密大全(4):玩转Hash加密
- .NET下的加密解密大全(3):非对称加密
- .Net下的加密解密大全(6):玩转非对称加密
- .NET下的加密解密大全(1):哈希加密
- 提供一个基于.NET的加密/解密算法(对称加密)
- .Net框架下的加密解密算法大全
- .NET中的密码学--对称加密(下)
- .NET中的密码学--对称加密(下)
- .NET中的密码学--对称加密(下)
- .NET中的加密解密:私钥加密(对称加密):AES、DES、RC2、Rijindael、TripleDES
- java加密解密--对称加密
- .net下RSA加密解密的封装
- . net的加密解密
- .Net加密与解密——对称加密
- 对称加密解密模块
- 对称加密解密模块
- Java NIO 小结
- C#密闭类
- SQL 临时表
- 03_HL7简介
- Oracle存储过程语法 .
- .Net下的加密解密大全(5):玩转对称加密
- 视讯音频标准推陈出新,谁是音频效果之霸?
- LaTeX使用--使用XeLaTeX支持中文(可以放弃Office了)
- FlexClient, MessageClient, and FlexSession
- 基于用户组织角色权限和资源的五要素
- 访问android平台的通话记录CallLog
- VMware虚拟机不能发声
- Java NIO 写文件
- 04_IHE简介