Reputation: 54823
I want to compress some files (into the ZIP format) and encrypt them if possible using C#. Is there some way to do this?
Can encryption be done as a part of the compression itself?
Upvotes: 3
Views: 4674
Reputation: 71130
For compression, look at the System.IO.Compression
namespace and for encryption look at System.Security.Cryptography
.
Upvotes: 12
Reputation: 4703
I know the question is already old, but I must add my two cents.
First, some definitions:
Now, System.IO.Compression does not do Zip archiving. It does deflate and gzip compression, thus will compress a single blob of data into another single blob of data.
So, if you're looking for an archive format that can group many files and folders, you need Zip libraries like:
If you only need to compress and encrypt a single blob of data, then look under System.IO.Compression and System.Security.Cryptography.
Upvotes: 6
Reputation: 58783
Chilkat provides .NET libraries for compression and encryption.
Upvotes: 1
Reputation: 29243
If they cannot be combined, do compression first and then encryption. Compressing an already encrypted file will lead to poor compression ratios, because a lot of redundancy is removed.
Upvotes: 0
Reputation: 59719
For Zip Compression, have you seen http://www.icsharpcode.net/OpenSource/SharpZipLib/
Upvotes: 7
Reputation: 72039
I'm not sure if the steps can be combined, but .NET has good support for basic crypto. Here's an article on it.
Upvotes: 0
Reputation: 73713
There isn't anything you can use directly in C#, however you can use some libraries from J# to do it for you:
http://msdn.microsoft.com/en-us/magazine/cc164129.aspx
Should do just what you want?
With regards to the encryption, have a look at these links:
http://www.codeproject.com/KB/security/fileencryptdecrypt.aspx
http://www.obviex.com/samples/EncryptionWithSalt.aspx
Upvotes: -1
Reputation: 340496
The GZipStream class is a native way to handle compression.
As for encryption, there are many ways to do it, most of them in the System.Security namespace. They can be done chained (encrypt a compressed stream or compress an encrypted stream).
Upvotes: 1
Reputation: 124044
Here is a useful topic:
Help in creating Zip files from .Net and reading them from Java
System.IO.Packaging namespace gives you useful classes to compress data in zip format and support rights management.
Upvotes: -1