[转]C# 使用 256 位 AES 加密和解密文件

本文转自:http://www.cnblogs.com/yaob/archive/2011/05/20/2051642.html

 

听说 AES 加密是非常安全的, 256 位的甚至是美国神马安全局的加密标准.
本着收藏不为人知的邪恶资料, 在网上找了一下怎么用 C# 去实现这个加密和解密. 很可惜的是, 网上的代码, 要么出错, 要么不完整, 甚至连微软 MSDN 的代码也讲的不清不楚. 自己经过多方面的整理之后, 得出了以下两段可用的代码. 希望对大家有所帮助.

加密:

 
   
public byte [] AesEncryptor( byte [] bsFile, string password)
{
RijndaelManaged aes
= new RijndaelManaged();
aes.Key
= Encoding.UTF8.GetBytes( this .PasswordMD5(password));
aes.IV
= Encoding.UTF8.GetBytes( this .PasswordMD5(password).Substring( 8 , 16 ));
aes.Mode
= CipherMode.CBC;
aes.Padding
= PaddingMode.PKCS7;

ICryptoTransform transform
= aes.CreateEncryptor();
return transform.TransformFinalBlock(bsFile, 0 , bsFile.Length);
}

解密:

 
   
public byte [] AesDecryptor( byte [] bsFile, string password)
{
RijndaelManaged aes
= new RijndaelManaged();
aes.Key
= Encoding.UTF8.GetBytes( this .PasswordMD5(password));
aes.IV
= Encoding.UTF8.GetBytes( this .PasswordMD5(password).Substring( 8 , 16 ));
aes.Mode
= CipherMode.CBC;
aes.Padding
= PaddingMode.PKCS7;

ICryptoTransform transform
= aes.CreateDecryptor();
return transform.TransformFinalBlock(bsFile, 0 , bsFile.Length);
}

使用说明:

用法其实非常简单. 两法方法都差不多, 简单说一下.
传入文件的 byte 数组, 以及密码. 因为这个 256 位的 key 是需要 32 位的, 而 IV 是需要 16 位, 于是我用了一个 PasswordMD5 来将密码处理为 32 位. 如果你还不知道怎么 MD5, 可以看我之前的文章.
另外就是, KEY 和 IV 都是解密的时候要用到的, 且两个值必须正确, 才能成功解开.
两个方法的返回值都是 byte 数组, 把数组用 File 类写入到文件中, 加密和解密就完成了~ 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值