如何在 Ubuntu 和 Mac 中使用 python/bash 快速加密/解密文件夹中的文件?

如何在 Ubuntu 和 Mac 中使用 python/bash 快速加密/解密文件夹中的文件?

我想使用 MSDOS 格式的 USB 磁盘来安全地在它们之间传输数据。因此,我想轻松地解密和加密文件夹(和子文件夹)中的所有文件,可能使用 python 脚本或 bash 命令。

  • 我不想加密整个 USB 棒,因为使用 MSDOS 格式化时这可能是不可能的。
  • 我不能使用 Linux/MacOS 格式,因为我希望能够将 USB 记忆棒与它们两者一起使用。
  • 我想要一个单行命令,通过提供密码来加密文件夹和子文件夹中的所有文件!
  • 我希望有一行命令通过给出正确的密码来解密所有这些文件。
  • 它应该很快就能完成(大约 1000 个文件)

有什么方法可以轻松完成此操作吗?有 Python 工具吗?或者 Linux 命令?

答案1

以下是一些可能的解决方案。

从你的问题来看,我认为你对加密不是很精通,只是想在两台机器之间传输(USB 记忆棒)数据时保护数据不被窥探,而且你处理的不是极其敏感的数据(比如当某些人的生命依赖于它的保密性时)。

您可以将数据打包成 tarball 并使用 GnuPG 对其进行加密。

$ tar -cvf archive.tar directory_with_data
$ gpg --symmetric archive.tar

系统将提示您输入密码,并生成加密文件 archive.tar.gpg。在另一端,执行

$ gpg --decrypt archive.tar.gpg > archive.tar
$ tar -xvf archive.tar

解密并解压。

这是一个非常草率和粗暴的解决方案,扩展性不佳。更强大的解决方案是使用 EncFS。

在 USB 上创建或安装加密目录。

 $ encfs path_USB/.encrypted_directory path_machine/transparent_directory

现在,当您将文件放入时,transparent_directory它们将被即时加密到.encrypted_directory。要卸载transparent_directory

 $ fusermount -u path_to_transparent_directory

上述命令中的路径必须是完整路径(绝不能是相对路径)。

EncFS 方法比前一种方法更方便,扩展性也更好。但是,请注意,有权访问加密数据的人会知道目录中有多少个文件,并且根据其资源,还可以推断出文件的大小以及文件名的长度。还可以对文件名本身进行确认攻击。

答案2

我确实发现了一些可以满足我需求的东西。我不想写一些毫无意义的东西,我想分享它,这样它可能会帮助别人。

该工具在github:https://github.com/jlinoff/lock_files

它是一个单一的 Python 脚本,可用于加密目录内的所有文件(递归)。命令如下

python lock_files.py -r --lock myfiles/

并解密您使用的文件

python lock_files.py -r --unlock myfiles/

在这种简单情况下,您需要在命令行上提供密码。我将包含文件和 github repo 的文件夹存储在 USB 上,这样我就可以在我使用的任何计算机上使用它(假设python安装了某些必需的软件包)。它也相当快……

相关内容