我想通过 Ruby 脚本解压缩加密/受密码保护的文件,而不需要下拉到系统调用。我目前使用 rubyzip 库来解压缩文件,但没有看到处理加密文件的选项。
任何人都知道一些代码或库可以做到这一点?
是的,顺便说一下,有一个效果很好,我刚试过,发现你的帖子在中间..
使用示例:
require 'archive/zip'
Archive::Zip.extract('example5.zip', 'a_destination', :password => 'seakrit')
我相信这对于在谷歌上寻找相同内容的其他人会很有用:)
有时正确的答案是使用系统调用。这就是它在那里的原因。
的确,它比使用库或方法更慢且更不优雅。但它比向某人纳税(版税)便宜得多,而且比自己编写一个新库要快得多。
迄今为止,我只听说过Chilkat Ruby Zip 库,它不是免费的。RubyZip 库不支持受密码保护的文件,因为底层库 zlib 也不支持。
不是 ruby 库,但是......也许是一个免费的选择。
如果您的应用程序在 Windows 上运行,您可以通过新的 COM 接口使用DotNetZip库。它执行受密码保护的文件,无论是 Zip 加密(弱)还是与 WinZip 兼容的 AES 加密。
DotNetZip 是免费的。
如果Windows是不可能的,可能还有另一种可能性。DotNetZip 也可以在 Mono 中运行。我不知道是否有 Ruby-to-Mono 集成机制允许您在其他平台上从 Ruby 调用 Mono,但如果它们存在,它们也可能让您调用 DotNetZip。
总是可以选择使用 JRuby + 一个 Java 库来处理 zip 文件。 http://www.lingala.net/zip4j处理(加密的)zip 文件并且是 Apache 许可的。我还没有使用它,但它应该可以工作。