如何加密文件?

如何加密文件?

我想从我的服务器下载一些文件到我的笔记本电脑中,问题是我希望这种通信尽可能隐秘和安全。到目前为止,我想到了使用 VPN,这样我就可以通过我的服务器重定向笔记本电脑的整个互联网流量。此外,我尝试使用 ftp 发送文件并同时观察 Wireshark。通信似乎是加密的,但是我也想加密文件本身(作为第二步安全或类似的东西)。

我的服务器是运行 Raspbian 的 RasPi。我的笔记本电脑是 Macbook Air。

我想首先加密我的 Ras Pi 中的文件,然后下载它。我怎样才能做到这一点?

答案1

您可以openssl使用基于密钥的对称密码进行加密和解密。例如:

openssl enc -in foo.bar \
    -aes-256-cbc \
    -pass stdin > foo.bar.enc

这会使用 256 位加密(您可以使用开关foo.bar来指定输出文件,而不是像上面那样重定向 stdout)foo.bar.enc-outAES密码输入加拿大广播公司模式。还有各种其他可用的密码(请参阅 参考资料man enc)。然后,该命令将等待您输入密码并使用该密码生成适当的密钥。您可以使用以下命令查看密钥-p或使用您自己的密码来代替密码-K(实际上,它比密码稍微复杂一些,因为初始化向量或者需要来源,请man enc再次查看)。如果使用密码,则可以使用相同的密码进行解密,无需查看或保留生成的密钥。

要解密这个:

openssl enc -in foo.bar.enc \
    -d -aes-256-cbc \
    -pass stdin > foo.bar

请注意-d。另请参阅man openssl

答案2

对于一次性情况,您可以使用 zip 和密码进行加密。虽然不如基于密钥的技术那么强大(因为很难拥有一个好的密码),但它可能适合特殊情况。

命令行如下所示:

zip -r -0 -e encrypted_file.zip /path/to/files

-r to recurse directories.
-e to encrypt

答案3

对@goldilocks 答案进行轻微修改:

加密

openssl enc -in foo -aes-256-cbc -pbkdf2 -out foo.enc

差异:

  1. 通过省略参数-pass stdin,这将提示“输入 aes-256-cbc 加密密码:”并让您输入密码而不在控制台中显示;
  2. 它将使用PBKDF2默认迭代的算法,并抑制警告“***警告:使用了已弃用的密钥派生。使用 -iter 或 -pbkdf2 会更好。”

解密

openssl enc -d -in foo.enc -aes-256-cbc -pbkdf2 -out foo.plain

相关内容