Есть ли в C # библиотеки сжатия и шифрования? - PullRequest
3 голосов
/ 16 сентября 2008

Я хочу сжать некоторые файлы (в формат ZIP ) и зашифровать их, если это возможно, используя C #. Есть ли способ сделать это?

Может ли шифрование выполняться как часть самого сжатия?

Ответы [ 9 ]

12 голосов
/ 16 сентября 2008

Для сжатия посмотрите на пространство имен System.IO.Compression и для шифрования посмотрите на System.Security.Cryptography.

7 голосов
/ 16 сентября 2008

Для сжатия Zip, вы видели http://www.icsharpcode.net/OpenSource/SharpZipLib/

5 голосов
/ 23 сентября 2008

Я знаю, что вопрос уже старый, но я должен добавить свои два цента.

Сначала несколько определений:

  • Zip : формат архива для перегруппировки файлов и папок в один файл и, при желании, шифрования данных.
  • Deflate : Один из алгоритмов сжатия, используемых в Zip-файле для сжатия данных. Самый популярный.
  • GZip : один файл, сжатый с помощью deflate, с небольшим верхним и нижним колонтитулом.

Теперь System.IO.Compression выполняет , а не делает Zip-архивирование. Он выполняет сжатие deflate и gzip , таким образом сжимает один блок данных в другой отдельный блок данных.

Итак, если вы ищете формат архива, который может группировать множество файлов и папок, вам нужны библиотеки Zip, такие как:

Если вам нужно только сжать и зашифровать один большой двоичный объект данных, посмотрите под System.IO.Compression и System.Security.Cryptography .

1 голос
/ 16 сентября 2008

Chilkat предоставляет библиотеки .NET для сжатия и шифрования.

1 голос
/ 16 сентября 2008

Класс GZipStream является встроенным способом обработки сжатия.

Что касается шифрования, существует множество способов , большинство из которых находится в пространстве имен System.Security. Их можно сделать связанными (зашифровать сжатый поток или сжать зашифрованный поток).

0 голосов
/ 16 сентября 2008

Если они не могут быть объединены, сначала выполните сжатие, а затем шифрование. Сжатие уже зашифрованного файла приведет к плохим коэффициентам сжатия, потому что много избыточности удаляется.

0 голосов
/ 16 сентября 2008

Я не уверен, что шаги могут быть объединены, но .NET имеет хорошую поддержку для базового шифрования. Вот статья .

0 голосов
/ 16 сентября 2008

Нет ничего, что вы можете использовать непосредственно в C #, однако вы можете использовать некоторые библиотеки из J #, чтобы сделать это для вас:

http://msdn.microsoft.com/en-us/magazine/cc164129.aspx

Стоит ли делать то, что ты хочешь?

Что касается шифрования, взгляните на следующие ссылки:

http://www.codeproject.com/KB/security/fileencryptdecrypt.aspx

http://www.obviex.com/samples/EncryptionWithSalt.aspx

0 голосов
/ 16 сентября 2008

Вот полезная тема:

Помощь в создании Zip-файлов из .Net и чтении их из Java

Пространство имен System.IO.Packaging предоставляет полезные классы для сжатия данных в формате zip и поддерживает управление правами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...