天天看點

gpg加密

1 概述

工作中,可以用加密的工具對資料進行加密,linux系統有兩款加密工具,openssl enc 和 gpg

本文介紹了如何用gpg(GNU Privacy Guard)實作對稱和非對稱的加密

2. 對稱加密

.對稱加密file檔案,選項是-c

gpg  -c file      

這裡需要輸入一個密碼,解密也是用同一密碼進行解密

解密檔案

gpg  -o file -d file.gpg      

這裡的file可以自己指定名稱,-o是生成新檔案,-d是解密

注意,雖然可以生成加密檔案,但是我的出現了如下的三個報錯,第一個問題解決

[root@localhost ~]#gpg -c aa
#這個檔案沒有找到不知道從哪裡擷取這個檔案
can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
#以下的這兩報錯如果在6的桌面端打開終端,在運作生成的指令就不會報錯
Xlib:  extension "RANDR" missing on display "localhost:10.0".
Xlib:  extension "RANDR" missing on display "localhost:10.0".      

3. 非對稱加密

使用gpg工具實作公鑰加密過程如下

.在hostB主機上用公鑰加密,在hostA主機上解密

a.在hostA主機上生成公鑰/私鑰對

b.把A的公鑰導出來

c.把A的公鑰發送給需要加密資料給A的機器上,如hostB

d.在hostB主機上用A公鑰加密檔案file,并把加密後的file檔案發給A

e.在hostA主機上解密file

3.1 hostA生成密鑰

gpg   --gen-key

這一步隻需要在需要别的主機生成隻有自己能加密檔案的機器上才需要生成鑰匙對

如果隻是用其他主機的公鑰來機密檔案,該主機可以不生成自己的公鑰和私鑰對

這裡最後還會提示輸入一個密碼,這個密碼是用來加密的私鑰的,當要解密檔案的時候,要輸入該密碼,建議是8位數

最後還是需要敲入大量的字元,讓機器生成随機數。這裡建議不要在終端上操作,否則會很慢,

直接在實體機上操作,生成密鑰對的速度就很快

3.2 檢視鑰匙對

生成鑰匙後,在hostA主機上檢視鑰匙對

檢視公鑰清單

gpg  --list-keys      

檢視私鑰清單

gpg --list-secret-key      

3.3 導出公鑰

在hostA主機上導出公鑰,命名為sunny.pubkey

這一步一定是在gpg --gen-key生成後,才會有公鑰可以導出,否則沒有執行gpg  --gen-key的話,就沒有鑰匙産生

一台機器上可以通過gpg  --gen-key生成多把鑰匙,然後用gpg -a 可以把所有的鑰匙都導出來

gpg  -a --export -o sunny.pubkey      

注意,私鑰也可以導出,但是一般不導出來,自己主機保留

gpg -a --export-secret-keys -o sunny6a.prikey      

3.4 發送公鑰給需要加密的機器

從hostA主機上複制公鑰檔案到需加密的B主機上

scp  sunny.pubkey   hostB      

3.5 加密檔案

使用gpg工具實作公鑰加密檔案

3.5.1 導入鑰匙

在hostB主機上導入公鑰

gpg   --import  sunny.pubkey      

注意 其他主機(如hostA)私鑰也可以導入,方法和導出公鑰一樣,sunny6a.prikey是私鑰名稱,如下

gpg --import sunny6a.prikey      

3.5.2 加密檔案

用從hostA主機導入的公鑰,加密hostB主機的檔案file,生成  file.gpg

在B上用A的公鑰進行加密檔案,這樣加密的檔案,隻有A才能解密,因為隻有A有自己的私鑰

注意,以下-r 選項後面的key是不帶字尾的公鑰名稱,即用gpg --list-key檢視到的uid

gpg  -e -r  sunny   file      

3.5.3 發送加密後的檔案給主機A

複制加密檔案file.gpg到hostA主機

scp   file.gpg   hostA      

3.6 解密檔案

在hostA主機解密檔案

gpg  -d file.gpg
gpg  -o file -d file.gpg      

加了-o選項後,可以将解密後的内容重定向到新的檔案,解密的時候,系統會自動識别用該主機的哪把私鑰進行加密

3.7 删除鑰匙

3.7.1 僅删除公鑰

.在B上删除公鑰和私鑰,删除别的地方導進來的key,這個步驟是在别的地方導入的時候做的,

不能直接删除自己機器上的公鑰,自己機器上的公鑰要删除,首先要删除私鑰,才能在删除公鑰

gpg  --delete-keys wangxiaochun      

3.7.2 删除公鑰和私鑰

如果沒有導入私鑰,這裡就不會有私鑰,一般私鑰不給别人,是通過gpg  --gen-key産生,才會有私鑰

要删除有生成公鑰和私鑰對的機器

gpg   --delete-secret-keys sunny
gpg  --delete-keys  sunny