博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩
阅读量:6826 次
发布时间:2019-06-26

本文共 3750 字,大约阅读时间需要 12 分钟。

这里我们选用ICSharpCode.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();}/// /// 文件加密压缩/// /// 需要压缩的文件路径/// 压缩包路径(压缩包文件类型看自己需求)/// 加密密码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 compressions.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                     do13                     {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                             do20                             {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     }
View Code

3.Md5

1  class md5 2     { 3         #region "MD5加密" 4         ///  5         ///32位 MD5加密 6         ///  7         /// 加密字符 8         /// 
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 #endregion22 }
View Code

 

转载于:https://www.cnblogs.com/myfy/p/6047958.html

你可能感兴趣的文章
convenience - 便利构造函数
查看>>
golang 碎片整理之 结构体
查看>>
查看oracle查看当前连接以及修改最大连接数
查看>>
docker安装mysql镜像
查看>>
java中的IO整理
查看>>
我的linux学习决心书
查看>>
python 之多线程加锁
查看>>
我的友情链接
查看>>
exchange快速将断开的邮箱显示出来
查看>>
linux 下查找文件或者内容常用命令
查看>>
Linux常用系统调用表
查看>>
linux x86_64要注意的问题
查看>>
批处理中的call与start的个人学习心得
查看>>
搜索引擎的前世今生
查看>>
JSP
查看>>
经典排序算法 - 地精排序Gnome Sort
查看>>
mysql rand函数
查看>>
24种编程语言的Hello World程序
查看>>
Java中main函数参数String args[] 和 String[] args 区别
查看>>
Jarvis Oj Pwn 学习笔记-Tell Me Something
查看>>