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# 文件压缩加解密的更多相关文章

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

    这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http://icsharpcode.github.io/SharpZipLib/ 1.单个或多个文件加 ...

  2. C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件

    我们 开发时经常会遇到需要压缩文件的需求,利用C#的开源组件ICSharpCode.SharpZipLib, 就可以很容易的实现压缩和解压缩功能. 压缩文件: /// <summary> ...

  3. 利用ICSharpCode.SharpZipLib.Zip进行文件压缩

    官网http://www.icsharpcode.net/ 支持文件和字符压缩. 创建全新的压缩包 第一步,创建压缩包 using ICSharpCode.SharpZipLib.Zip; ZipOu ...

  4. 利用ICSharpCode.SharpZipLib进行压缩

    #ZipLib is a Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform. It is im ...

  5. C# 下利用ICSharpCode.SharpZipLib.dll实现文件/目录压缩、解压缩

    ICSharpCode.SharpZipLib.dll下载地址 1.压缩某个指定文件夹下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志. #region 压缩 ...

  6. PHP和.NET通用的加密解密函数类,均使用3DES加解密 .

    以下为php代码 <PRE class=PHP name="code"> </PRE><PRE class=PHP name="code&q ...

  7. 你想不到的压缩方法:将javascript文件压缩成PNG图像存储

    这样可以做到很高的压缩比,到底有多高,下面会提到.这种方法用到了 canvas 控件,这也意味着只有支持 canvas 控件的浏览器下才有效. 现在你可以看到,上面的图像类似一个噪声图像,但它实际上是 ...

  8. java加密工具类,可设置对应的加解密key

    public class AesEncryptUtil { //使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同! private static String KEY =& ...

  9. 用ICSharpCode.SharpZipLib进行压缩

    今天过中秋节,当地时间(2013-09-08),公司也放假了,正好也闲着没事,就在网上学习学习,找找资料什么的.最近项目上可能会用到压缩的功能,所以自己就先在网上学习了,发现一个不错的用于压缩的DLL ...

随机推荐

  1. BZOJ3697 采药人的路径 【点分治】

    题目 采药人的药田是一个树状结构,每条路径上都种植着同种药材. 采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是阳性的. 采药人每天都要进行采药活动.他选择的路径 ...

  2. 实时监控linux

    https://www.cnblogs.com/tinywan/p/6826125.html

  3. jq 的replaceWith方法在360下面会出现兼容问题

    弄的繁琐点, 先remove旧的元素,然后append就好了

  4. MAMP 10.10下启动报错解决方案

      cd /Applications/MAMP/Library/binmv envvars _envvars

  5. Linux 之 MySQL主从同步

    MySQL主从同步 参考教程:[千峰教育] 1.架设两个虚拟服务器,都安装好mysql. 2.关闭防火墙和Selinux. service iptables stop setenforce 0 3.修 ...

  6. AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服 ...

  7. Django学习笔记(12)——分页功能

    这一篇博客记录一下自己学习Django中分页功能的笔记.分页功能在每个网站都是必要的,当页面因需要展示的数据条目过多,导致无法全部显示,这时候就需要采用分页的形式进行展示. 分页在网站随处可见,下面展 ...

  8. ML | Naive Bayes

    what's xxx In machine learning, naive Bayes classifiers are a family of simple probabilistic classif ...

  9. js获得checkbox选中值及input后面的文本

    原文:http://blog.csdn.net/u014079773/article/details/51865596 js如何获得多个checkbox选中的值及input后面所跟的文本 <!d ...

  10. 【hibernate】唯一约束 注解

    唯一约束注解 单列约束和联合约束 分别如下 @Table( uniqueConstraints = { @UniqueConstraint(columnNames = "uid") ...