有没有办法可以将文件添加到加密档案中而无需提供该档案的密码?
例如,如果您使用的 Dropbox 上有 TrueCrypt 加密文件,则可以轻松地在便携模式下使用 TrueCrypt 来挂载该文件,然后向其中添加文件。但是,如果您在一台不完全受信任的计算机上工作,则不仅需要输入密码,还需要允许该计算机至少临时访问未加密的存档。这可能不是理想的选择,但您可能需要从不完全受信任的计算机向该存档添加文件。
我怀疑不仅目前没有办法做到这一点,而且也不可能有办法做到这一点,但我想知道我是否遗漏了什么。
答案1
使用传统的对称加密,这是不可能的 - 您需要使用与解密文件完全相同的密钥来加密文件。
你正在寻找的是不对称或“基于公钥”的加密技术,如 PGP 和 SSL 中使用的加密技术。在非对称算法中,一对密钥,一个用于加密(公钥),另一个用于解密(私钥)。加密密钥可以公开,任何人都可以使用。(顺便说一下,这就是 HTTPS 的工作原理。)
不幸的是,我不知道有任何“存档”/“容器”类型的程序以这种方式工作,主要是因为可靠地创建仅附加存档有点棘手——要么你必须以未加密的方式存储元数据,要么你会遇到严重的数据损坏风险。然而,如果你只有一每个输入的输出文件,例如...
...一种可能性是安装便携式 GnuPG(一种免费的 PGP 实现),并编写一个脚本来自动将文件加密到“临时”文件夹中。稍后在安全的位置,您可以再次使用 GnuPG 解密这些文件,并将它们移动到您的 TrueCrypt 容器中。
例如,此.cmd
脚本将加密拖放的所有文件:
@echo off & setlocal
:: I assumed a USB stick, so here %~d0 will expand to the drive letter.
:: Where this script looks for GnuPG
set GNUPGDIR=%~d0\Apps\GnuPG
:: Where GnuPG looks for its keyrings
set GNUPGHOME=%~d0\Private\GnuPG
:: Where the encrypted files are put
set DESTDIR=%~d0\Private\Encrypted
:: Your PGP key ID or email
set [email protected]
if not exist "%DESTDIR%" mkdir "%DESTDIR%"
:loop
if "%~1"=="" goto :eof
echo Encrypting "%~1"
"%GNUPGDIR%\gpg" -r "%RECIPIENT%" -e -o "%DESTDIR%\%~nx1.gpg" "%~1"
:next
shift
goto :loop
答案2
如果您不想设置 gpg 基础结构,而只想使用公钥/私钥对加密文件,则以下工具可能会有用:https://github.com/galets/AsymmetricCrypt. 您需要 Linux 上的 Mono 才能运行它。
它将使用 AES256 加密文件,并使用 4096 位 RSA 加密密钥。
我编写了这个工具,它专门用于您描述的那种情况:当您需要某些东西来加密文件而无法将其解密时。