2008-12-04 5 views
9

Je suis en train de trouver une compression zip et un composant de chiffrement avec encryption suitable for use by the US Federal Government, donc je ne peux pas utiliser le cryptage Zip 2.0, il doit être AES ou similaire. Je l'ai déjà trouvé SharpZipLib (ne peut pas faire AES encyrption) et Chilkat (peut chiffrement AES, mais coûte de l'argent). Ai-je manqué d'autres options?Suggestions pour une librairie .NET bon marché/gratuite pour faire du Zip avec le chiffrement AES?

Répondre

10

Combien seriez-vous prêt à payer pour AES dans DotNetZip? ;)

DotNetZip prend en charge le cryptage AES avec des clés de 128 ou 256 bits.

http://www.codeplex.com/DotNetZip

Exemple Code:

using (ZipFile zip = new ZipFile()) 
    { 
    zip.AddFile("ReadMe.txt"); // no password for this entry 

    // use a password for subsequent entries 
    zip.Password= "This.Encryption.is.FIPS.197.Compliant!"; 
    zip.Encryption= EncryptionAlgorithm.WinZipAes256; 
    zip.AddFile("Rawdata-2008-12-18.csv"); 
    zip.Save("Backup-AES-Encrypted.zip"); 
    } 

Les fichiers zip AES-cryptées produites par DotNetZip peut être lu et extrait par WinZip, et vice-versa.

Vous pouvez aussi créer des fichiers zip réguliers sans cryptage.

oh, et il est gratuit.

+0

Est-ce que l'un de vous a un moyen de voir quelle méthode a été utilisée pour crypter un archiver? Si j'ouvre une archive générée avec WinZip je vois qu'elle est en effet cryptée, mais je n'ai aucun moyen de dire avec quel algorithme (Zip2.0, AES128, AES256, etc.). – WowtaH

+0

DotNetZip vous le dira avec la propriété ZipFile.Encryption sur un fichier zip que vous avez lu. Je ne sais pas comment le faire avec WinZip. – Cheeso

+1

J'étais vraiment excité à propos de cette bibliothèque, mais nous devons utiliser les fournisseurs de chiffrement certifiés tels que 'AesCryptoServiceProvider' vs la contrepartie gérée' AesManaged'. Je pense que DotNetZip utilise 'RijndaelManaged' pour la rétrocompatibilité avec .NET 2 :( –

6

Si l'argent est un gros problème, vous pouvez prendre une bibliothèque open source comme celui-ci http://www.codeplex.com/DotNetZip, qui supporte maintenant AES

+0

Mise à jour: AES est désormais pris en charge dans DotNetZip. http://DotNetZip.codeplex.com/ – Cheeso

+0

modifié pour prendre en compte la mise à jour –

6

Qu'en est-7-Zip? Il est open source sous la LGPL (il devrait donc être utilisable dans votre projet) et selon les spécifications il prend en charge le cryptage ZIP avec AES.

+0

J'aime 7-zip, mais il nécessite soit le lancement d'un processus (pour l'exécuter à partir de la ligne de commande) ou COM/code non managé Interop. – MatthewMartin

+1

En fait, ils ont le SDK LZMA qui a maintenant le code C# pour l'utiliser aussi: http://www.7-zip.org/sdk.html –

1

Découvrez cet article génial sur le Stream Pipeline. Il ne définit pas seulement un moyen sympa de relier les flux les uns aux autres de manière multithread, l'exemple utilisé est la compression suivie d'un chiffrement.

+0

Le lien est cassé maintenant, l'article semble être dans le Février 2008 Problème MSDN, Colonne ".NET Matters: Stream Pipeline". http://download.microsoft.com/download/3/A/7/3A7FA450-1F33-41F7-9E6D-3AA95B5A6AEA/MSDNMagazineFebruary2008-us.chm –

1

Vous pouvez utiliser #ZipLib (https://icsharpcode.github.io/SharpZipLib/), qui est une alternative légère à DotNetZipLib.

Il offre la classe FastZip, qui réduit la compression d'un dossier sur le disque dur avec le cryptage AES à 2-3 lignes de code.

Voir le wiki de référence: https://github.com/icsharpcode/SharpZipLib/wiki/FastZip

Si vous avez besoin plus de fonctionnalités, #ZipLib devient un peu plus compliqué que DotNetZipLib, mais celui-ci créé fichiers ZIP corrompus dans mon cas, donc j'utiliser SharpZipLib de toute façon.

Questions connexes