信息安全技術實用教程-第4版---張同光---ISBN-9787121423031---3.4.3實例——用非對稱加密算法加密文件

信息安全技術實用教程-第4版---張同光---ISBN-9787121423031---3.4.3實例——用非對稱加密算法加密文件

https://my.oschina.net/ztguang/blog/5329391

主  編:     張同光

ISBN號: 978-7-121-42303-1             9787121423031
出版日期:   2021-11-20
出版社:     電子工業出版社

頁碼:  定價:¥69.80元
 

3.4.3  實例——用非對稱加密算法加密文件

根據虛擬機KaliLinuxvdi文件KaliLinux.vdi創建虛擬機KaliLinux-2,具體的創建過程可以參考第一章的1.7.4節和網絡資料,虛擬機KaliLinux-2的主要參數設置如圖3.55所示,網絡連接方式選擇“網絡地址轉換(NAT)

注意:VirtualBox導入vdi時報錯“Cannot register the hard disk because a hard disk with UUID already exists.”,解決方法是打開帶管理員權限的PowerShell,切換到VirtualBox安裝目錄(比如C:\Program Files\Oracle\VirtualBox),執行如下命令:

.\VBoxManage.exe internalcommands sethduuid C:\ztg\VirtualBox-OS-vdi\KaliLinux.vdi

 

3.55  創建虛擬機KaliLinux-2

3.4.3.1  GnuPG加密文件

GnuPG軟件包(Gnu Privacy GuardGnu隱私保鏢)軟件包的名稱是gpg

1虛擬機KaliLinux創建密鑰

虛擬機KaliLinux創建一個用來發送加密數據和進行解密數據的密鑰。

執行gpg --gen-key命令,生成密鑰,如3.56所示,根據提示輸入相關信息

 

 

 

 

3.56  創建密鑰

現在已經.gnupg目錄生成了一對密鑰且存在於文件中,進入.gnupg目錄進行查看,如3.57所示。

 

 

 

 

3.57  .gnupg目錄內容

2虛擬機KaliLinux提取公共密鑰

爲了使對方虛擬機KaliLinux-2使用剛纔生成的公共密鑰1FCB3E8FEA808287,需要用命令公共密鑰提取出來發送給對方。執行命令gpg --export 1FCB3E8FEA808287 > pub.key,將公共密鑰提取到文件pub.key中。

3KaliLinux-2收到KaliLinux公共密鑰

虛擬機KaliLinux-2收到對方虛擬機KaliLinux的公共密鑰後在虛擬機和宿主機之間通過拖放的方法,執行命令gpg --import pub.key把這個公共密鑰放到自己的pubring.kbx文件鑰匙環文件執行命令gpg --delete-secret-and-public-key 1FCB3E8FEA808287可以將公共密鑰鑰匙環文件中刪除命令的執行如3.58所示。

 

 

 

 

3.58  保存別人的公共密鑰

執行gpg –kv命令查看目前存放別人的公共密鑰,如3.59所示。

 

 

 

 

3.59  查看公共密鑰

 

 

 

 

3.60  用公共密鑰加密文件

4KaliLinux-2使用KaliLinux公共密鑰加密文件

虛擬機KaliLinux-2執行gpg -ea -r 1FCB3E8FEA808287 gpg_temp.txtgpg_temp.txt文件進行加密。

-e代表加密

-a代表ASCII格式

-r後面是公共密鑰標識

1FCB3E8FEA808287:爲密鑰標識。

命令執行後,在當前目錄下生成了一個同名的gpg_temp.txt.asc的文件,加密後的文件。具體執行過程如3.60所示。

5KaliLinuxKaliLinux-2發來的加密文件進行解密

KaliLinux收到KaliLinux-2發來的加密文件gpg_temp.txt.asc後,執行gpg -o gpg_temp2.txt -d gpg_temp.txt.asc命令,用私有密鑰對加密文件進行解密。

-o輸出文件

-d表示解密。

在當前目錄下生成了解密後的文件gpg_temp2.txt。具體執行過程如3.61所示。

 

 

 

 

3.61  加密文件進行解密

3.4.3.2  OpenSSL加密解密文件

在安全性要求比較高的環境下,可以藉助OpenSSL工具對數據進行加密,這樣能進一步的保障數據的安全性,幾乎所有的Linux發行版裏都會預裝OpenSSLOpenSSL可以實現消息摘要、文件的加密和解密、數字證書、數字簽名和隨機數字。SSLSecure Sockets Layer的縮寫,是支持在Internet上進行安全通信的標準,並且將數據密碼技術集成到協議中。數據在離開計算機之前被加密,然後只有到達它預定的目標後才被解密。

下面介紹2種使用OpenSSL加密解密方法:(1使用密碼加密解密;(2使用密鑰加密解密。

1使用密碼加密解密

1)對文件加密解密

1步:虛擬機KaliLinux執行如下命令加密一個文件,test1.txt爲原始文件,test1.txt.aes爲加密之後的文件。

echo openssl enc test > test1.txt

openssl enc -e -aes256 -in test1.txt -out test1.txt.aes

其中,

enc:表示對文件進行對稱加密或解密;

-e:表示對一個文件進行加密操作;

-aes256:表示使用aes256算法進行加密或解密;

-in:表示需要被加密的文件;

-out:表示加密之後生成的新文件。

加密過程中會要求輸入一個加密密碼,重複輸入兩次即可完成對文件的加密。

2步:虛擬機KaliLinux-2執行如下命令解密一個文件,test1.txt.aes爲加密的文件,test1.txt爲解密之後的文件。

openssl enc -d -aes256 -in test1.txt.aes -out test1.txt

其中,

enc:表示對文件進行對稱加密或解密;

-d:表示對文件進行解密操作;

-aes256:表示使用aes256算法進行加密或解密;

-in:表示需要被解密的文件;

-out:表示解密之後生成的新文件。

解密一個文件的時候會要求輸入加密文件時設置的密碼才能進行解密。

2)配合tar對文件夾加密解密

1步:虛擬機KaliLinux執行如下命令打包並加密文件夾。

mkdir -p testdir/{a,b,c}

echo openssl des3 testdir > testdir/a/testdir.txt

tar czvf - testdir | openssl des3 -salt -k password -out testdir.tar.gz

該例中以des3加密方式,設置密碼爲password的方式加密testdir文件夾並將加密後的文件輸出爲testdir.tar.gz。使用-k參數,這樣就免出了讓提示輸密碼的麻煩。這樣可以方便以腳本的方式對敏感文件進打包並加密。

上面的操作也可以分兩步來完成,第一步先通過tar czvf testdirtmp.tar.gz testdir進行打包備份。第二步再通過openssl des3 -salt -k password -in testdirtmp.tar.gz -out testdir.tar.gz的方式加密。

2步:虛擬機KaliLinux-2執行如下命令解密並解包文件夾。

openssl des3 -d -k password -salt -in testdir.tar.gz | tar xzvf -

上述操作的具體過程如圖3.62所示。

 

 

 

 

3.62  使用密碼加密解密

2使用密鑰加密解密

有時會出現忘記密碼的情況,另外如果密碼設置的太簡單,很容易被破解,這時可以能過密鑰的方式進行加密和解密。

1步:虛擬機KaliLinux執行如下命令生成一個2048位的密鑰文件test.key

openssl genrsa -out test.key 2048

test.key密鑰文件包含了公鑰和密鑰兩部分,該文件即可以用於加密和解密。可以將公鑰從test.key密鑰文件中提取出來,供自己或他人用於加密(僅能用來加密,無法用來解密)。

2步:虛擬機KaliLinux執行如下命令test.key密鑰文件中提取出公鑰。

openssl rsa -in test.key -pubout -out test_pub.key

其中test_pub.key爲公鑰文件,密鑰文件test.key包含公鑰和私鑰。

3步:虛擬機KaliLinux-2執行如下命令利用公鑰test_pub.key加密文件。

echo openssl rsautl test > test2.txt

openssl rsautl -encrypt -in test2.txt -inkey test_pub.key -pubin -out test2.txt.en

此處利用公鑰加密test2.txt文件,並輸出爲test2.txt.en-in指定要加密的文件,-inkey指定密鑰,-pubin表明是用純公鑰文件加密,-out爲加密後的文件。

4步:虛擬機KaliLinux執行如下命令利用密鑰文件test.key中的私鑰解密一個文件。

openssl rsautl -decrypt -in test2.txt.en -inkey test.key -out test2.txt

此處利用私鑰解密test2.txt.en文件,並輸出爲test2.txt-in指定要解密的文件,-inkey指定密鑰,-out爲解密後的文件。

上述操作的具體過程如圖3.63所示。

 

 

 

 

3.63  使用密鑰加密解密

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章