文件归档库/ API?

时间:2012-05-28 00:28:29

标签: c# .net file archive

我正在创建一个文档依赖于资源的应用程序,我希望它们可以嵌入到一个文件中。我想知道是否存在已经存在的库或API来创建包含其中嵌入的其他文件的文件,而不是创建新格式。它的格式无关紧要,但我正在寻找一个:

  1. 加密或不加密的选项
  2. 可以告诉现有文件是否已加密。
  3. 让我为它制作自己的文件扩展名,而不是使用为格式创建的文件扩展名。
  4. 适用于.NET 3.5
  5. 你们会推荐哪些图书馆?

2 个答案:

答案 0 :(得分:3)

您可以使用DotNetZip库,以下是使用AES加密的示例

using (ZipFile zip = new ZipFile())
{
  zip.AddFile("ReadMe.txt"); // no password for this one
  zip.Password= "Cool.Hand.Luke!";
  zip.Encryption= EncryptionAlgorithm.WinZipAes256;
  zip.AddFile("Rawdata-2008-12-18.csv");
  zip.Save("Backup-AES-Encrypted.zip");
}

示例来自this页面,保存时您可以使用任何扩展名。

答案 1 :(得分:2)

我不确定“创建自己的格式”是什么意思。

存档/加密文件的方法有很多种。您可以组合这些方法。首先加密您要写的任何内容,然后使用API​​编写它们。

以下是创建档案的一些资源:

http://weblogs.asp.net/jgalloway/archive/2007/10/25/creating-zip-archives-in-net-without-an-external-library-like-sharpziplib.aspx

对于加密,您可以使用RSA。用您的RSA密钥替换your_rsa_key。

var provider = new System.Security.Cryptography.RSACryptoServiceProvider();
provider.ImportParameters(your_rsa_key);

var encryptedBytes = provider.Encrypt(
    System.Text.Encoding.UTF8.GetBytes("Hello World!"), true);

string decryptedTest = System.Text.Encoding.UTF8.GetString(
    provider.Decrypt(encryptedBytes, true));