c#中 aes 加密大文件

yoopooy 2017-05-04 04:18:39
c#中 aes 加密大文件 ....

c# 中 aes 加密 不指定模式是不是
默认bcb 加密?

加密大文件的时候 意识内存不足 或提示 文件太大 系统不支持。。。

请各路大牛 集思广益

提供小弟一份加密大文件的代码。。。。
...全文
371 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forty2 2017-05-05
  • 打赏
  • 举报
回复
用流式处理。

static void AesEncrypt(Aes aes, Stream inStream, Stream outStream)
{
    using (var cryptoStream = new CryptoStream(inStream, aes.CreateEncryptor(), CryptoStreamMode.Read))
    {
        cryptoStream.CopyTo(outStream);
    }
}

static void Main()
{
    Aes aes = ...;
    using (var 输入流 = File.OpenRead("要加密的文件"))
    using (var 输出流 = File.Create("结果文件"))
    {
        AesEncrypt(aes, 输入流, 输出流);
    }
}
yoopooy 2017-05-05
  • 打赏
  • 举报
回复
引用 3 楼 Forty2 的回复:
用流式处理。

static void AesEncrypt(Aes aes, Stream inStream, Stream outStream)
{
    using (var cryptoStream = new CryptoStream(inStream, aes.CreateEncryptor(), CryptoStreamMode.Read))
    {
        cryptoStream.CopyTo(outStream);
    }
}

static void Main()
{
    Aes aes = ...;
    using (var 输入流 = File.OpenRead("要加密的文件"))
    using (var 输出流 = File.Create("结果文件"))
    {
        AesEncrypt(aes, 输入流, 输出流);
    }
}
--------------------- 报错 Exception: Exception of type 'System.OutOfMemoryException' was thrown 源代码

       public static Byte[] encrypt(Byte[] data, Byte[] key)
        { 
            RijndaelManaged provider_AES = new RijndaelManaged();
            provider_AES.KeySize = 128;
            ICryptoTransform encrypt_AES = provider_AES.CreateEncryptor(key, key);
            byte[] output = encrypt_AES.TransformFinalBlock(data, 0, data.Length);
            return output;
        }
yoopooy 2017-05-04
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
bcb是什么模式?是cbc吧,但默认是ecb不是cbc模式。文件太大是不支持的,需要自己分段加密,解密时同样分段解密
.... 打错了。。。。 请问有详细的代码米有。。。
xdashewan 2017-05-04
  • 打赏
  • 举报
回复
bcb是什么模式?是cbc吧,但默认是ecb不是cbc模式。文件太大是不支持的,需要自己分段加密,解密时同样分段解密

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧