2009-05-26 10 views
3

Je voudrais décompresser un fichier protégé par mot de passe/chiffré via un script Ruby sans passer à un appel système. J'utilise actuellement la bibliothèque rubyzip pour décompresser les fichiers mais je ne vois pas d'option pour travailler avec des fichiers cryptés.Comment décompresser le fichier protégé par mot de passe via Ruby

Quelqu'un connaît un peu de code ou une bibliothèque qui fera cela?

+0

Les exigences ont changé et je n'ai plus besoin de décompresser un fichier protégé par un mot de passe, donc j'utilise Ruby Zip pour faire le décompresser. Merci pour les réponses. – digitalsanctum

Répondre

1

Le seul dont j'ai entendu parler à ce jour est le Chilkat Ruby Zip library, qui n'est pas gratuit. La bibliothèque RubyZip ne prend pas en charge les fichiers protégés par mot de passe car la bibliothèque sous-jacente, zlib, ne le fait pas non plus.

2

Parfois, la bonne réponse consiste à utiliser un appel système. Voilà pourquoi c'est là.

Vrai, c'est plus lent et moins élégant que d'utiliser une bibliothèque ou une méthode. Mais c'est moins cher que de payer une taxe à quelqu'un (un paiement de redevances) et beaucoup plus rapidement que d'écrire une nouvelle bibliothèque.

0

Pas une bibliothèque de rubis, mais ... peut-être une option gratuite. Si votre application fonctionne sous Windows, vous pouvez utiliser la bibliothèque DotNetZip via la nouvelle interface COM. Il fait des fichiers protégés par mot de passe, soit un cryptage Zip (faible), soit un cryptage AES compatible WinZip.

DotNetZip est gratuit.

Si Windows est hors de question, il peut y avoir une autre possibilité. DotNetZip fonctionne aussi en Mono. Je ne sais pas s'il existe des mécanismes d'intégration Ruby-to-Mono pour vous permettre d'appeler depuis Ruby vers Mono sur d'autres plateformes, mais si elles existent, elles peuvent aussi vous permettre d'appeler DotNetZip.

0

Il est toujours possible d'utiliser JRuby + une bibliothèque Java pour gérer les fichiers zip. http://www.lingala.net/zip4j gère les fichiers zip (cryptés) et est sous licence Apache. Je ne l'ai pas encore utilisé, mais devrait fonctionner.

3

Oui, il y a un qui fonctionne très bien par ailleurs, je l'ai juste essayé et trouvé votre poste au milieu ..

Archive-zip

Exemple d'utilisation:

require 'archive/zip' 
Archive::Zip.extract('example5.zip', 'a_destination', :password => 'seakrit') 

Je suis sûr que cela sera utile pour quelqu'un d'autre qui cherche la même chose sur google :)

+1

Votre réponse a été utile pour quelqu'un cherchant via google;) Peut être installé via 'gem install archive-zip' et a fonctionné sans problème. – knut

Questions connexes