public static async Task ZipAsync(string[] srcFiles,string writeFile,int size=  *  * , CancellationToken token=default)
{
try
{
FileStream zipStream = new FileStream(writeFile, FileMode.OpenOrCreate);
using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
{
foreach (string srcFile in srcFiles)
await Entry(archive, srcFile, token);
}
zipStream.Dispose();
Console.WriteLine("Zip Success");
}
catch (Exception e)
{
Console.WriteLine("Zip Failed" + e);
} async Task Entry(ZipArchive archive,string srcFile, CancellationToken ct)
{
try
{
ZipArchiveEntry fileEntry = archive.CreateEntry(Path.GetFileName(srcFile));
FileStream srcStream = new FileStream(srcFile, FileMode.Open);
var buffer = new Memory<byte>(new byte[size]);
using (Stream entryStream = fileEntry.Open())
{
int len;
while ((len=await srcStream.ReadAsync(buffer, ct)) > )
await entryStream.WriteAsync(len != size ? buffer.Slice(, len) : buffer,ct);
}
}
catch (Exception e)
{
Console.WriteLine("Entry Failed" + e);
}
}
} public static void Encrypt(SymmetricAlgorithm provider, string readFile, string writeFile,int size=)
{
try
{
var buffer=new Span<byte>(new byte[size]);
FileStream fsWrite = new FileStream(writeFile, FileMode.Create);
FileStream fsRead = new FileStream(readFile, FileMode.Open);
ICryptoTransform transform = provider.CreateEncryptor(provider.Key, provider.IV);
CryptoStream cs = new CryptoStream(fsWrite, transform, CryptoStreamMode.Write);
int len;
while ((len = fsRead.Read(buffer)) > )
cs.Write(len != size ? buffer.Slice(, len) : buffer);
fsRead.Close();
cs.Close();
fsWrite.Close();
Console.WriteLine("Encrypt Success");
}
catch (Exception e)
{
Console.WriteLine("Encrypt Failed" + e);
}
}
public static void Decrypt(SymmetricAlgorithm provider, string readFile, string writeFile, int size = )
{
try
{
var buffer = new Span<byte>(new byte[size]);
FileStream fsRead = new FileStream(readFile, FileMode.Open);
FileStream fsWrite = new FileStream(writeFile, FileMode.OpenOrCreate);
ICryptoTransform transform = provider.CreateDecryptor(provider.Key, provider.IV);
CryptoStream cs = new CryptoStream(fsRead, transform, CryptoStreamMode.Read);
int len;
while ((len = cs.Read(buffer)) > )
fsWrite.Write(len != size ? buffer.Slice(, len) : buffer);
fsWrite.Close();
cs.Close();
fsRead.Close();
Console.WriteLine("Decrypt Success");
}
catch (Exception e)
{
Console.WriteLine("Decrypt Failed" + e);
}
}
public static async Task EncryptAsync(SymmetricAlgorithm provider, string readFile, string writeFile, int size = , CancellationToken token=default)
{
try
{
var buffer = new Memory<byte>(new byte[size]);
FileStream fsWrite = new FileStream(writeFile, FileMode.Create);
FileStream fsRead = new FileStream(readFile, FileMode.Open);
ICryptoTransform transform = provider.CreateEncryptor(provider.Key, provider.IV);
CryptoStream cs = new CryptoStream(fsWrite, transform, CryptoStreamMode.Write);
int len;
while ((len = await fsRead.ReadAsync(buffer, token)) > )
await cs.WriteAsync(len != size ? buffer.Slice(, len) : buffer,token);
await fsWrite.FlushAsync(token);
fsRead.Close();
cs.Close();
fsWrite.Close();
Console.WriteLine("Encrypt Success");
}
catch (Exception e)
{
Console.WriteLine("Encrypt Failed" + e);
}
}
public static async Task DecryptAsync(SymmetricAlgorithm provider, string readFile, string writeFile, int size = , CancellationToken token = default)
{
try
{
var buffer = new Memory<byte>(new byte[size]);
FileStream fsRead = new FileStream(readFile, FileMode.Open);
FileStream fsWrite = new FileStream(writeFile, FileMode.OpenOrCreate);
ICryptoTransform transform = provider.CreateDecryptor(provider.Key, provider.IV);
CryptoStream cs = new CryptoStream(fsRead, transform, CryptoStreamMode.Read);
int len;
while ((len = await cs.ReadAsync(buffer,token)) > )
await fsWrite.WriteAsync(len != size ? buffer.Slice(, len) : buffer,token);
await fsWrite.FlushAsync(token);
fsRead.Close();
cs.Close();
fsWrite.Close();
Console.WriteLine("Decrypt Success");
}
catch (Exception e)
{
Console.WriteLine("Decrypt Failed" + e);
}
}

C#大文件流式压缩加解密的更多相关文章

  1. 精讲RestTemplate第6篇-文件上传下载与大文件流式下载

    本文是精讲RestTemplate第6篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层H ...

  2. C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密

    C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩   这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http:// ...

  3. C# 文件压缩加解密

    1.这种方式也可以做到对文件的加密压缩,解密解压缩,只是在压缩和解压缩时会出现压缩窗口 1.1加密压缩 strzipPath:压缩包路径 strtxtPath:待压缩的文件路径 password:加密 ...

  4. java获取远程网络图片文件流、压缩保存到本地

    1.获取远程网路的图片 /** * 根据地址获得数据的字节流 * * @param strUrl * 网络连接地址 * @return */ public static byte[] getImage ...

  5. Java实现http大文件流读取并批量插入数据库

    1.概述 请求远程大文本,使用流的方式进行返回.需要设置http链接的超时时间 循环插入到List中,使用mybatis-plus批量插入到mysql中 2.需求 两台服务器 大文件放到其中一台服务器 ...

  6. Fiddler忽略捕捉大文件流

    Fiddler是款非常不错的抓包软件,可以方便的捕捉各种软件发起的HTTP请求,甚至可以在发送给服务器前或响应给应用前修改数据.但是在使用时发现,在开启Fiddler时,在浏览器中下载文件时不会马上弹 ...

  7. golang gin框架中实现大文件的流式上传

    一般来说,通过c.Request.FormFile()获取文件的时候,所有内容都全部读到了内存.如果是个巨大的文件,则可能内存会爆掉:且,有的时候我们需要一边上传一边处理. 以下的代码实现了大文件流式 ...

  8. Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)

    1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...

  9. 流式处理框架storm浅析(上篇)

    本文来自网易云社区 作者:汪建伟 前言 前一段时间参与哨兵流式监控功能设计,调研了两个可以做流式计算的框架:storm和spark streaming,我负责storm的调研工作.断断续续花了一周的时 ...

随机推荐

  1. Spring入门篇——第1章 概述

    第1章 概述 本章对课程的情况进行介绍,并介绍框架和Spring概况. 1-1 Spring入门课程简介 1-2 Spring概况 1-3 Spring框架

  2. jQuery.trim()方法

    定义和用法 $.trim() 函数用于去除字符串两端的空白字符. 注意:$.trim()函数会移除字符串开始和末尾处的所有换行符,空格(包括连续的空格)和制表符.如果这些空白字符在字符串中间时,它们将 ...

  3. 自己写的一个用于往文件中插入字符串及空格的bat

    @echo off echo pleas input the filename:set /p file= :while rem set j=0 非得写这儿 写下面:check 上面不行 希望大神指点s ...

  4. eclipse调试断点

    1.条件断点 如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建.在调试界面中,“断点”视图会把所有被创建的断点列出来.我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔 ...

  5. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)

    题目链接:http://codeforces.com/contest/1041/problem/F 题意:给出一根无限长的管子,在二维坐标上表示为y1 <= y <= y2,其中 y1 上 ...

  6. 视频断点续传+java视频

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  7. Little Prince

    You know — one loves the sunset, when one is so sad... 你知道的—当一个人情绪低落的时候,他会格外喜欢看日落...... If someone l ...

  8. 转载一篇比较详细的讲解html,css的一篇文章,很长

      转载自这里,转载请注明出处. DIV+CSS系统学习笔记回顾   第一部分 HTML 第一章 职业规划和前景 职业方向规划定位: web前端开发工程师 web网站架构师 自己创业 转岗管理或其他 ...

  9. Python基础之深浅copy

    1. 赋值 lst1 = [1, 2, 3, ["a", "b", "c"]] lst2 = lst1 lst1[0] = 11 print ...

  10. Codeforces Round #371 (Div. 2)

    之前做过E题,是一个DP. A题,水题,两线段求交集. B题,set一下判断即可. C题,水题.但是我写麻烦了,直接转化成二进制再做,比用字符串relize()以后再map要好写得多. D题,交互题, ...