C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密
C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩
这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求。
下载地址:http://icsharpcode.github.io/SharpZipLib/
1.单个或多个文件加密压缩

class ZipClass { public void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize) { if (!System.IO.File.Exists(FileToZip)) { throw new System.IO.FileNotFoundException("The specified file " + FileToZip + " could not be found. Zipping aborderd"); } System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile); ZipOutputStream ZipStream = new ZipOutputStream(ZipFile); ZipEntry ZipEntry = new ZipEntry("ZippedFile"); ZipStream.PutNextEntry(ZipEntry); ZipStream.SetLevel(CompressionLevel); byte[] buffer = new byte[BlockSize]; System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length); ZipStream.Write(buffer, 0, size); try { while (size < StreamToZip.Length) { int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length); ZipStream.Write(buffer, 0, sizeRead); size += sizeRead; } } catch (System.Exception ex) { throw ex; } ZipStream.Finish(); ZipStream.Close(); StreamToZip.Close(); } /// <summary> /// 文件加密压缩 /// </summary> /// <param name="FileToZip">需要压缩的文件路径</param> /// <param name="ZipedFile">压缩包路径(压缩包文件类型看自己需求)</param> /// <param name="password">加密密码</param> public void ZipFileMain(string FileToZip, string ZipedFile, string password) { ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFile)); s.SetLevel(6); // 0 - store only to 9 - means best compression s.Password = md5.encrypt(password); //打开压缩文件 FileStream fs = File.OpenRead(FileToZip); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); Array arr = FileToZip.Split('\\'); string le = arr.GetValue(arr.Length - 1).ToString(); ZipEntry entry = new ZipEntry(le); entry.DateTime = DateTime.Now; entry.Size = fs.Length; fs.Close(); s.PutNextEntry(entry); s.Write(buffer, 0, buffer.Length); s.Finish(); s.Close(); } }

2.单个或多个加密压缩包解压

1 class UnZipClass 2 { 3 public void UnZip(string directoryName, string ZipedFile, string password) 4 { 5 using (FileStream fileStreamIn = new FileStream(ZipedFile, FileMode.Open, FileAccess.Read)) 6 { 7 using (ZipInputStream zipInStream = new ZipInputStream(fileStreamIn)) 8 { 9 zipInStream.Password = md5.encrypt(password); 10 ZipEntry entry = zipInStream.GetNextEntry(); 11 WebContext.SqlfilePath =directoryName+"\\"+ entry.Name; 12 do 13 { 14 using (FileStream fileStreamOut = new FileStream(directoryName + @"\" + entry.Name, FileMode.Create, FileAccess.Write)) 15 { 16 17 int size = 2048; 18 byte[] buffer = new byte[2048]; 19 do 20 { 21 size = zipInStream.Read(buffer, 0, buffer.Length); 22 fileStreamOut.Write(buffer, 0, size); 23 } while (size > 0); 24 } 25 } while ((entry = zipInStream.GetNextEntry()) != null); 26 } 27 } 28 } 29 }

3.Md5

1 class md5 2 { 3 #region "MD5加密" 4 /// <summary> 5 ///32位 MD5加密 6 /// </summary> 7 /// <param name="str">加密字符</param> 8 /// <returns></returns> 9 public static string encrypt(string str) 10 { 11 string cl = str; 12 string pwd = ""; 13 MD5 md5 = MD5.Create(); 14 byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl)); 15 for (int i = 0; i < s.Length; i++) 16 { 17 pwd = pwd + s[i].ToString("X"); 18 } 19 return pwd; 20 } 21 #endregion 22 }

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

public bool Zip(string strzipPath, string strtxtPath,string password) { try { System.Diagnostics.Process Process1 = new System.Diagnostics.Process(); Process1.StartInfo.FileName = "Winrar.exe"; Process1.StartInfo.CreateNoWindow = true; Process1.StartInfo.Arguments = " a -p" + password + " " + strzipPath + " " + strtxtPath; //strtxtPath = "c://freezip//"; //Process1.StartInfo.Arguments = " x -p123456 " + strzipPath + " " + strtxtPath; Process1.Start(); if (Process1.HasExited) { return true; } return true; } catch (Exception) { return false; } }

1.2解密解压

1 public bool UZip(string strzipPath, string strtxtPath,string password) 2 { 3 try 4 { 5 System.Diagnostics.Process Process1 = new System.Diagnostics.Process(); 6 Process1.StartInfo.FileName = "Winrar.exe"; 7 Process1.StartInfo.CreateNoWindow = true; 8 //Process1.StartInfo.Arguments = " a -p123456 " + strzipPath + " " + strtxtPath; 9 //strtxtPath = "c://freezip//"; 10 Process1.StartInfo.Arguments = " x -p" + password + " " + strzipPath + " " + strtxtPath; 11 Process1.Start(); 12 if (Process1.HasExited) 13 { 14 return true; 15 } 16 return true; 17 } 18 catch (Exception) 19 { 20 21 return false; 22 } 23 24 }

C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密的更多相关文章
- C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩
这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http://icsharpcode.github.io/SharpZipLib/ 1.单个或多个文件加 ...
- C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件
我们 开发时经常会遇到需要压缩文件的需求,利用C#的开源组件ICSharpCode.SharpZipLib, 就可以很容易的实现压缩和解压缩功能. 压缩文件: /// <summary> ...
- 利用ICSharpCode.SharpZipLib.Zip进行文件压缩
官网http://www.icsharpcode.net/ 支持文件和字符压缩. 创建全新的压缩包 第一步,创建压缩包 using ICSharpCode.SharpZipLib.Zip; ZipOu ...
- 利用ICSharpCode.SharpZipLib进行压缩
#ZipLib is a Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform. It is im ...
- C# 下利用ICSharpCode.SharpZipLib.dll实现文件/目录压缩、解压缩
ICSharpCode.SharpZipLib.dll下载地址 1.压缩某个指定文件夹下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志. #region 压缩 ...
- PHP和.NET通用的加密解密函数类,均使用3DES加解密 .
以下为php代码 <PRE class=PHP name="code"> </PRE><PRE class=PHP name="code&q ...
- 你想不到的压缩方法:将javascript文件压缩成PNG图像存储
这样可以做到很高的压缩比,到底有多高,下面会提到.这种方法用到了 canvas 控件,这也意味着只有支持 canvas 控件的浏览器下才有效. 现在你可以看到,上面的图像类似一个噪声图像,但它实际上是 ...
- java加密工具类,可设置对应的加解密key
public class AesEncryptUtil { //使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同! private static String KEY =& ...
- 用ICSharpCode.SharpZipLib进行压缩
今天过中秋节,当地时间(2013-09-08),公司也放假了,正好也闲着没事,就在网上学习学习,找找资料什么的.最近项目上可能会用到压缩的功能,所以自己就先在网上学习了,发现一个不错的用于压缩的DLL ...
随机推荐
- hihoCoder挑战赛29
多打打不同的比赛,找经验啊 题目4 : 不上升序列 时间限制:40000ms 单点时限:2000ms 内存限制:256MB 描述 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 ...
- POJ 1690 (Your)((Term)((Project)))
(Your)((Term)((Project))) Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2912 Accept ...
- ubuntu14 安装和使用docker
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互 ...
- 项目记事【多线程】:关于 SimpledDateFormat 的多线程问题
背景: 最近项目引入了 SonarLink,解决代码规范的问题,在检查历史代码的时候,发现了一个问题. 先看代码: public class DateUtil { private static fin ...
- BZOJ-1085 骑士精神
估价函数其实就是与目标状态有几个不同... 迭代启发搜索. #include <cstdlib> #include <cstdio> #include <cstring& ...
- java8 函数式接口——Function/Predict/Supplier/Consumer
Function 我们知道Java8的最大特性就是函数式接口.所有标注了@FunctionalInterface注解的接口都是函数式接口,具体来说,所有标注了该注解的接口都将能用在lambda表达式上 ...
- P1473 校门外的树3
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一 ...
- 学习javascript设计模式之装饰者模式
1.装饰者模式定义:给对象动态添加职责的方式称为装饰者(decorator)模式. js如何实现装饰者模式 通过保存原函数引用方式改写某函数 window.onload = function(){al ...
- hdu 4311 & 4312 Meeting point 曼哈顿距离之和最小
hdu 4311 题意 平面上\(n(n\leq 1e5)\)个点,找一个点到其它所有点的曼哈顿距离之和最小. 思路 如果是找一个坐标使得所有点到其曼哈顿距离之和最小,那么将\(n\)个横坐标排个序, ...
- Python入门--18--异常与try,except语句
Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) ...