【问题标题】:How can I compress and encrypt a large file without using external DLLs or runtimes? [closed]如何在不使用外部 DLL 或运行时压缩和加密大文件? [关闭]
【发布时间】:2012-07-25 13:36:11
【问题描述】:

我正在寻找一种组件或其他技术来将多个大文件(大小超过 4gb 的文件,因此不适合 win32 进程可用的内存)压缩和加密为单个文件。我希望加密非常强大(256 位 AES 或更好),但压缩对我来说并不重要。

现在,我正在使用 TJvZlibMultiple 组件创建自己的非 Zip 文件格式,但我必须创建存档,然后在单独的步骤中对其进行加密(我现在正在使用 DcpCrypt)。我想一次性使用流,而不使用等于文件大小的内存(因此,压缩和加密应该在流中进行,而不是在内存中)。

我已经看到并且不想使用任何需要外部 DLL(如 7zip dll)的东西。商业工具都可以,或者任何代码或示例 Delphi 源都可以,但我正在寻找 Delphi 中的彻底实现,而不是在 dll 中导入和调用函数的东西。

【问题讨论】:

  • 我不同意关闭的 2 票! (特别是没有任何解释)。
  • @François,这两个投票都表明该问题不具建设性,在这种情况下,这可能意味着他们反对征集组件,因为它与投票问题接壤。我让它离那个边界更远一点,让它问一个更普遍的问题,即如何实现既定目标,而不是专门询问一个组件。无论如何,大多数答案可能会建议组件或库。
  • 谢谢@RobKennedy。这样看起来确实更好。
  • 我最终使用了 Jedi JVCL 的定制版本的 TJvZLibMultiple,加上 DCPCrypt 的加密,因为我无法忍受 DIZipWriter 的限制,如下所列。但是,如果 DIZipWriter 曾经适用于 64 位时代的文件大小 (Int64),我会将其重新标记为答案。
  • SO 社区非常毒瘤,所有这些“高级代表”的人都投票结束问题,随机标记重复项并根据他们的意愿编辑人们的问题,他们应该从单纯的用户那里撤销所有这些权力。跨度>

标签: delphi encryption compression components


【解决方案1】:

看看DIZipWriter

支持 256 位 AES、流式传输和压缩。

更新: 版本 5 声称支持大型(64 位)条目,DIZipWriter History

【讨论】:

  • 我从这个问题中删除了答案标志,因为虽然这个组件有漂亮的加密支持,但它使用 Cardinal(32 位)而不是 int64 作为文件大小和位置参数,这意味着开发人员没有考虑过使用文件大小> 4 gb 的组件。因为那是容易的部分,我什至没有开始怀疑他会搞砸这么容易的事情。但是看看可下载的版本(它可以让你看到所有 API 的签名),我可以看到它还没有为大文件做好准备。
【解决方案2】:

【讨论】:

  • 比 DIZipWriter 贵,79 欧元。不过,还是不错的。
【解决方案3】:

检查 FlexCompress:

FlexCompress 是一个压缩 delphi 组件,旨在创建具有强加密和比 WinZip 和 RAR 更好的压缩率的档案。本机 VCL,无 DLL,无 OCX,为文件、缓冲区、流和字符串提供压缩,支持内存存档,压缩大于 4 Gb 的大文件,内存消耗低,还有许多其他有用的功能。

http://www.componentace.com/flexcompress_features.htm

通过此链接:http://delphi.about.com/od/toppicks/tp/delphi_zip.htm

【讨论】:

  • 上面已经建议了。使您的答案重复。请投票,
猜你喜欢
  • 2010-10-07
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多