是否可以使用 7zip 加密文件夹中的所有文件(包括其文件名),但完全不进行压缩?

是否可以使用 7zip 加密文件夹中的所有文件(包括其文件名),但完全不进行压缩?

我有一个包含多个文件的文件夹:

file1
file2
file3

我想使用 AES 对它们全部进行加密,包括文件名,因此输出应该是这样的:

kjk437fjk437
3k4jn34jk
j34nkj34

但我根本不想应用任何压缩。

可以使用 7zip 实现此目的吗?我正在使用 Debian 并且只寻找基于终端的解决方案。

编辑:我也希望能够在解密后恢复文件名。

答案1

您可能只是想隐藏文件名而不是加密它,因此应该执行如下操作:

for file in ./*;do 
  7z a $RANDOM-$RANDOM.7z -m1=copy -mhe -psecret "$file"; 
  rm "$file" 
done

-m1=copy表示使用复制方法,因此不压缩。
-mhe表示加密标头,因此没有密码就无法查看 7z 文件内的文件名。
-psecret将密码设置为secret

答案2

7zip 是必须的吗?选择正确的工具。加密文件系统好像是的。

  1. 安装它。在 Debian 中:apt-get install encfs
  2. 创建两个目录:mkdir encrypted mountpoint

  3. 运行该工具:

    encfs "$PWD/encrypted" "$PWD/mountpoint"
    

    请注意,您需要$PWD/而不是,./因为encfs不接受相对路径(除非-f使用)。

  4. 按照指示选择加密、密码。

  5. 将要加密的所有目录和文件复制或移动到./mountpoint。加密的目录和文件将出现在./encrypted目录中。

  6. 卸载:

    fusermount -u ./mountpoint
    

您现在可以复制/移动/重命名/tar/任何./encrypted目录整体而言。请注意,里面有一个隐藏.xml文件。该文件包含(受密码保护的)密钥,这至关重要,因此不要丢失它。可以单独存储该文件(阅读ENCFS6_CONFIG中的变量man 1 encfs)。

要访问原始文件,请重复步骤 3,提供正确的密码。处理所选挂载点下的文件:读取、添加、删除、修改,一切皆有可能。最后,像fusermount -u步骤 6 中一样卸载。

笔记:

答案3

您可以对文件夹进行两次加密以隐藏文件名:

type="zip"; file="your-folder"; password="your-password"; # You also could use other formats.

7z a -t"$type" "$file.$type" -p"$password" "$file"
7z a -t"$type" "$file.$type.$type" -p"$password" "$file.$type"

那么这个文件"your-folder.zip.zip"就是你想要的了。

相关内容