如何使用 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(一種對稱金鑰演算法)來使用 genrsa 生成的私鑰對 Sachin 生成的私鑰進行加密。
[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 1024 Generating 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 在兩個使用者之間進行通訊。我們還了解了對稱和非對稱加密、它們的優點和缺點。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP