这几天在写一个对文件进行加密解密的程序,翻了以前在博客园贴过的一段代码,稍微整理了一下,写成一个方便调用的类,并做了注释。
这里需要特别说明的是,AES 需要提供2个字符串,一个是KEY,一个是IV,并且都有长度要求。但对于一般的加密来说,是比较麻烦的。所以我还提供了一个方便调用的 Simple 方法,只需提供一个密码,通过 MD5 自动处理为 32 位长度的 KEY,并截取其中 16 位作为 IV,这样在调用的时候,也方便许多。
经过试用,觉得 AES 256 在加密小文件的时候,效率是可以的,但加密大文件(例如 1.25G 的视频)效率明显下降,并且占用系统资源很大。
以下是代码:
using System.Security.Cryptography;
using System.Text;
// 阿博-STYLE
// www.abo-style.com
namespace AboStyle
{
/// <summary>
/// AES 256 加密和解密 for C#
/// 阿博-STYLE(2012)
/// </summary>
public class Aes
{
#region Create
/// <summary>
/// 创建一个统一配置的加密算法。
/// </summary>
/// <param name="key">密钥(32位)</param>
/// <param name="iv">初始化向量(16位)</param>
/// <returns>RijndaelManaged</returns>
private static RijndaelManaged Create(string key, string iv)
{
RijndaelManaged rm = n