![如何在 Ubuntu 和 Mac 中使用 python/bash 快速加密/解密文件夹中的文件?](https://linux22.com/image/1566674/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%20%E5%92%8C%20Mac%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20python%2Fbash%20%E5%BF%AB%E9%80%9F%E5%8A%A0%E5%AF%86%2F%E8%A7%A3%E5%AF%86%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我想使用 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
安装了某些必需的软件包)。它也相当快……