如何使用 OpenSSL 加密大文件?
OpenSSL
OpenSSL 是一款用于通用加密和安全通信的宝贵工具,它可以执行各种任务,包括加密文件。大多数 Linux 发行版默认安装该工具;如果没有,您可以使用软件包管理器进行安装。
在使用 OpenSSL 加密文件之前,让我们先了解一下加密的基本知识。
加密是一种对消息进行编码以保护其内容不被窥探的方法。通常有两种类型:
对称加密或密钥加密
非对称加密或公钥加密
密钥加密使用相同的密钥进行加密和解密,而公钥加密使用不同的密钥进行加密和解密。
每种方法都有其优缺点。公钥加密比私钥加密更安全,因为它解决了密钥共享安全的问题,而且私钥加密比公钥加密更快。
结合使用可以最大限度地发挥每种加密方式的优势
公钥加密
公钥加密使用两组密钥,称为密钥对。
公钥
私钥
公钥可以自由地与任何您想秘密通信的人共享。私钥应保密,切勿共享。
加密是使用公钥执行的。如果您想与某人共享敏感信息,您可以向他们发送您的公钥,以便在将消息或文件发送给您之前对其进行加密。解密是通过私钥完成的,您只能使用自己的私钥解密发件人的加密消息。
使用 OpenSSL 加密文件
假设有两个用户,Sachin 和 Mohit,他们想要使用 OpenSSL 交换加密文件来相互通信。
您必须先生成一对密钥,然后才能加密文件。您还需要一个密码,每次使用 OpenSSL 时都需要记住它,因此请务必记住它。
Sachin 使用此命令生成他的密钥对集
$ openssl genrsa -aes128 -out sachin_private.pem 1024[root@localhost ~]# openssl genrsa -aes128 -out sachin_private.pem 1024
Generating RSA private key, 1024 bit long modulus.....................................++++++....++++++ e is 65537 (0x10001)Enter pass phrase for sachin_private.pem:Verifying - Enter pass phrase for sachin_private.pem:[root@localhost ~]#
此命令使用 OpenSSL 的"genrsa"命令生成 1024 位公钥/私钥对。
它还使用对称密钥算法 aes128 来加密 Sachin 使用 genrsa 生成的私钥。
[root@localhost ~]# ls -l sachin_private.pem-rw-r--r--. 1 root root 986 Sep 23 21:21 sachin_private.pem[root@localhost ~]# file sachin_private.pem sachin_private.pem: PEM RSA private key[root@localhost ~]#
Mohit 将按照相同的程序创建他的密钥对
openssl genrsa -aes128 -out mohit_private.pem 1024
[root@localhost ~]# openssl genrsa -aes128 -out mohit_private.pem 1024Generating RSA private key, 1024 bit long modulus........++++++..............................++++++ e is 65537 (0x10001)Enter pass phrase for mohit_private.pem:Verifying - Enter pass phrase for mohit_private.pem:[root@localhost ~]#
提取公钥
Sachin 必须使用以下命令提取其公钥并将其保存到文件中
openssl rsa -in sachin_private.pem -pubout > sachin_public.pem
输入 sachin_private.pem 的密码:
写入 RSA 密钥
Mohit 可以按照相同的步骤提取公钥。
交换公钥
在双方用户交换公钥之前,公钥对双方用户都没有任何用处。共享公钥的方法有很多。使用 scp 命令将公钥复制到对方的工作站就是其中之一。
如果您想将 Sachin 的公钥发送到 Mohit 的工作站,可以执行以下命令
scp sachin_public.pem mohit@mohit-machine-or-ip:/path/
要将 Mohit 的公钥发送到 Sachin 的工作站,请执行以下命令
scp mohit_public.pem sachin@sachin-machine-or-ip:/path/
现在 Sachin 拥有了 Mohit 的公钥,反之亦然。
使用公钥交换加密消息
Sachin 需要使用 openssl -encrypt 命令来加密此秘密消息。他必须向该工具提供三个输入:-
包含秘密消息的文件的名称
Mohit 的公钥(文件)
存储加密消息的文件的名称
您可以使用以下命令加密消息。
openssl rsautl -encrypt -inkey mohit_public.pem - pubin -in file_name.txt -out file_name.enc
注意 - 如果您的 openssl 版本是 3.0 或更高版本,请使用 pkeyutl 代替 rsautl,其余所有参数保持不变。
您可以使用 scp 命令将此文件发送到 Mohit 的工作站,如果他使用常规方法读取该文件,则将无法读取此文件。他需要这三条信息来解密消息。
加密文件
他的私钥
用于保存解密输出的文件名
Openssl rsautl -decrypt -inkey mohit_private.pem -in file_name.enc >file_name.txt
现在 Mohit 可以读取 Sachin 发送的文件了。
结论
我们可以说 OpenSSL 是一个支持多种加密函数的程序和库 -
对称密钥生成
公钥/私钥对生成
公钥加密
哈希函数
证书创建等等。
在上文中,我们了解了如何使用 OpenSSL 加密大文件。如何以安全的方式发送文件以及如何使用 OpenSSL 在两个用户之间进行通信。我们还了解了对称和非对称加密,以及它们的优点和缺点。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

