希望我不会离题太远,更详细地讨论您问题的最后一部分,因为我认为汤姆涵盖了其他所有内容。
我也找不到 gpg 在密文上使用 MAC 的任何迹象。
最近,我一直在使用scrypt 实用程序使用密码加密文件(密码文件和用于备份的 tar 文件)。没有我知道的 Windows 版本(我猜 cygwin 会工作),我也不知道支持它生成的特定文件格式的任何其他应用程序。与我能够找到并可能为您工作的其他实用程序相比,它仍然更接近我正在寻找的东西。它故意很少有选择;IMO,它可以使用验证选项,因为现在您必须解密到 /dev/null 才能做到这一点。文档不是很好。您必须查看源分发中的 FORMAT 文件以了解它实际在做什么,它使用随机 256 位盐对密码运行 scrypt 以获取两个 256 位密钥,一个用于 CTR 中的 AES-256固定随机数为 0 的模式,另一个用于 HMAC-SHA256。还,-t 参数使用的时间估计不准确;我发现我需要使用 -t 25 来获得 5 秒的按键强化。另一件烦人的事情是,将解密输出通过管道传输到 less 并不完全有效,因此当您查看和编辑解密输出时,您需要找到某个地方来存储解密的输出。我使用了内存文件系统(没有或加密交换,无论如何这都是一个好主意)或加密的主目录。它使用从作者的其他类似实用程序复制的 openssl AES 实现和其他加密代码,但没有构建为单独的库(这很好;其他人这样做了,但我现在找不到链接)。主要的好处是它在相当少量的代码中完成了基本的“加强密码然后加密然后验证”的事情。
我以前使用过但不推荐使用seccure,它使用基于椭圆曲线加密并直接从密码派生的公钥(不幸的是,仅通过单轮 SHA256)。它看起来被遗弃了,产生了损坏的文件,并且需要一堆锁定的内存才能工作。我喜欢它尝试做的事情,并希望有一个工作版本。
我还没有找到具有集成“加密然后 MAC”和现代加密来处理文件漏洞和 UNIX 权限等问题的优秀存档器。我认为如果您只想要 zip 样式归档但我没有具体建议,情况会更好。
希望在接下来的几年中,将有标准的广泛可用的实用程序来轻松地完成这种事情,它们不像当前的选项那么复杂并使用当前的加密货币。