帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 如何在Linux服务器中使用OpenSSL加密大文件

如何在Linux服务器中使用OpenSSL加密大文件

发布时间:2022年05月19日 09:54:57    来源: A5互联

文件加密涉及为驻留在硬盘驱动器或 USB 驱动器等媒体设备上的用户/系统文件提供安全性。对于要加密的此类文件,它们需要处于存储状态,以便没有进程或程序正在主动访问/处理它们。加密文件存储在本地,因此不鼓励通过网络发送。

当一个文件被加密,并且需要添加数据时,它会被暂时解密,直到所述用户/程序完成写入和/或读取数据,然后再次加密。加密文件的唯一目的是防止未经授权的读取、写入、复制和/或删除目标文件。

OpenSSL是一个软件库,可通过已配置的网络在应用程序之间提供安全通信。大多数HTTPS网站和互联网服务器都使用此软件库来防止窃听,并识别他们在网络另一端与之通信的各方。

本教程将引导我们在Linux服务器中使用OpenSSL加密一个大文件。

创建示例参考文件

由于本教程侧重于加密大文件,因此我们需要创建一个大的文件。我们可以使用Util-Linux软件包中的fallocate命令。

让我们使用fallocate命令创建一个 1GB 的大文本文件:

$ fallocate -l 1024M test.txt

我们应该能够使用echo 命令向该文件添加一些文本。

$ echo "www.a5idc.net" >> test.txt

我们可以使用cat 命令来确认我们写入文件的内容:

$ cat test.txt

使用 OpenSSL 使用密码加密文件

在这里,将使用单个密码或密钥来加密我们的大文本文件。我们将引用的对称密钥加密算法是AES(高级加密标准)。

该算法可以容纳 128、192 和 256 位加密密钥,以便成功加密和解密 128 位块中的数据。

要加密大的test.txt文件,我们将运行以下命令:

$ openssl enc -aes-256-cbc -pbkdf2 -p -in test.txt -out test.txt.enc

上述命令中使用的选项的说明:

enc执行对称密钥加密过程。

-aes-256-cbc指定使用 256 位加密密钥。

-pbkdf2是使用的默认算法。

-p打印使用的组成、密钥和 IV。

-in指向输入文件。

-out指向输出文件。

当命令执行时,您将被要求输入并确认您的首选加密密码。我们可以使用cat 命令来确认我们不能再读取该文件。

$ cat test.txt.enc

要解密文件,请运行:

$ openssl aes-256-cbc -d -pbkdf2 -in test.txt.enc -out sample_decrypted.txt

您将需要输入之前生成的加密密码。

使用 OpenSSL 使用密钥加密文件

第一步是生成密钥文件:

$ openssl rand 256 > symmetric_keyfile.key

我们现在可以使用密钥文件来加密我们的文件:

$ openssl enc -in test.txt -out test.txt.enc -e -aes-256-cbc -pbkdf2 -k symmetric_keyfile.key

cat 命令应确认无法读取该文件。

$ cat test.txt.enc

要解密文件,请运行:

$ openssl enc -in test.txt.enc -out draft_decrypted.txt -d -aes-256-cbc -pbkdf2 -k symmetric_keyfile.key

非对称加密

使用这种生成私钥并从中生成公钥的方法与加密大文件不兼容,您将看到错误提示:data too large for key size。

至此,我们已经在Linux服务器中使用OpenSSL成功加密了一个大文件。