如何加密文件?

drp*_*eas 15 encryption files

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

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

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

gol*_*cks 29

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

openssl enc -in foo.bar \
    -aes-256-cbc \
    -pass stdin > foo.bar.enc
Run Code Online (Sandbox Code Playgroud)

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

要解密这个:

openssl enc -in foo.bar.enc \
    -d -aes-256-cbc \
    -pass stdin > foo.bar
Run Code Online (Sandbox Code Playgroud)

请注意-d. 另见man openssl


小智 6

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

命令行如下所示:

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

-r to recurse directories.
-e to encrypt
Run Code Online (Sandbox Code Playgroud)


Pie*_*e D 5

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

加密

openssl enc -in foo -aes-256-cbc -pbkdf2 -out foo.enc
Run Code Online (Sandbox Code Playgroud)

差异:

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

解密

openssl enc -d -in foo.enc -aes-256-cbc -pbkdf2 -out foo.plain
Run Code Online (Sandbox Code Playgroud)