如何通过Ruby解压缩受密码保护的文件

时间:2009-05-26 13:44:33

标签: ruby unzip rubyzip

我想通过Ruby脚本解压缩加密/密码保护的文件,而不是直接进入系统调用。我目前使用rubyzip库解压缩文件,但没有看到使用加密文件的选项。

有人知道某些代码或库会这样做吗?

5 个答案:

答案 0 :(得分:4)

是的,顺便说一下,有一个效果很好,我刚尝试过,发现你的帖子在中间..

Archive-zip

使用示例:

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

我确信这对于在谷歌上寻找相同内容的其他人有用:)

答案 1 :(得分:2)

有时候正确的答案是使用系统调用。这就是它存在的原因。

是的,它比使用库或方法更慢,更不优雅。但它比向某人缴纳税款(特许权使用费)便宜,而且比自己写一个新图书馆要快得多。

答案 2 :(得分:1)

迄今为止我唯一听到的是Chilkat Ruby Zip library,这不是免费的。 RubyZip库不支持受密码保护的文件,因为底层库zlib也不支持。

答案 3 :(得分:0)

不是红宝石图书馆,但......也许是免费的选择。

如果您的应用在Windows上运行,则可以通过新的COM界面使用DotNetZip库。它使用受密码保护的文件,Zip加密(弱)或WinZip兼容的AES加密。

DotNetZip是免费的。

如果Windows不可能,可能还有另一种可能性。 DotNetZip也在Mono中运行。我不知道是否有Ruby-to-Mono集成机制允许你在其他平台上从Ruby调用Mono,但如果它们存在,它们也可能让你调用DotNetZip。

答案 4 :(得分:0)

总是可以选择使用JRuby + Java库来处理zip文件。 http://www.lingala.net/zip4j处理(加密)zip文件并获得Apache许可。我还没有使用它,但它应该工作。