天天看點

GPG 非對稱加密

非對稱加密/解密檔案時,發送方(UserA)以接收方(UserB)的公鑰加密檔案,接收方以自己的私鑰解密

1.接收方UserB建立自己的公鑰、私鑰對,執行gpg --gen-key操作,根據提示選擇并建立密鑰:

2.[UserB@pc207 ~]$ gpg --gen-key

1.請選擇您要使用的密鑰種類:

2.(1) RSA and RSA (default)

3.(2) DSA and Elgamal

4.(3) DSA (僅用于簽名)

5.(4) RSA (僅用于簽名)

6.您的選擇? //直接回車預設(1)

7.RSA 密鑰長度應在 1024 位與 4096 位之間。

8.您想要用多大的密鑰尺寸?(2048) //接受預設2048位

9.您所要求的密鑰尺寸是 2048 位

10.請設定這把密鑰的有效期限。

11.0 = 密鑰永不過期

12. = 密鑰在 n 天後過期

13.w = 密鑰在 n 周後過期

14.m = 密鑰在 n 月後過期

15.y = 密鑰在 n 年後過期

16.密鑰的有效期限是?(0) //接受預設永不過期

17.密鑰永遠不會過期

18.以上正确嗎?(y/n)y //輸入y确

2.接收方UserB導出自己的公鑰檔案;使用者的公鑰、私鑰資訊分别儲存在pubring.gpg和secring.gpg檔案内

[UserB@pc207 ~]$ gpg --list-keys                         //檢視公鑰環
/home/UserB/.gnupg/pubring.gpg
[UserB@pc207 ~]$ gpg --list-secret-keys
/home/UserB/.gnupg/secring.gpg                         //檢視私鑰環      

使用gpg指令結合–import選項将其中的公鑰文本導出,傳給發送方UserA:

[UserB@pc207 ~]$ gpg -a --export UserB > /tmp/UserB.pub
[UserB@pc207 ~]$ ftp 192.168.4.7
Name (192.168.4.7:UserB): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> lcd /tmp/
Local directory now /tmp
ftp> put UserB.pub                          //通過FTP将公鑰傳給發送方主機
local: UserB.pub remote: UserB.pub
227 Entering Passive Mode (192,168,4,6,59,39).
150 Ok to send data.
226 Transfer complete.
1719 bytes sent in 0.000127 secs (13535.43 Kbytes/sec)
ftp> quit
221 Goodbye.      

3.發送方UserA導入接收方的公鑰資訊

使用gpg指令結合–import選項導入發送方的公鑰資訊,以便在加密檔案時指定接收人來調用對應的公鑰。

[UserA@svr7 ~]$ gpg --import /var/ftp/pub/UserB.pub
[UserA@svr7 ~]$ echo "I love you ." > tosend.txt
[UserA@svr7 ~]$ gpg -e -r UserB tosend.txt
[UserA@svr7 ~]$ exit
logout
[root@svr7 ~]# cp /home/UserA/tosend.txt.gpg /var/ftp/tosend.txt.gpg      

4.接收方UserB收取加密檔案,以自己的私鑰解密檔案

[UserB@pc207 ~]$ wget ftp://192.168.4.7/tosend.txt.gpg
[UserB@pc207 ~]$ gpg -d tosend.txt.gpg > tosend.txt
[UserB@pc207 ~]$ cat tosend.txt                      //獲得解密後的檔案内容
I love you .
***************************************      
[UserB@pc207 ~]$ tar zcf tools-1.2.3.tar.gz /etc/hosts      //建立測試軟體包
[UserB@pc207 ~]$ gpg -b tools-1.2.3.tar.gz                  //建立分離式數字簽名
[UserB@pc207 ~]$ ls -lh tools-1.2.3.tar.gz* UserB.pub
-rw-rw-r--. 1 UserB UserB 170 8月  17 21:18 tools-1.2.3.tar.gz
-rw-rw-r--. 1 UserB UserB 287 8月  17 21:22 tools-1.2.3.tar.gz.sig
-rw-rw-r--. 1 UserB UserB 1.7K 8月  17 21:26 UserB.pub
[root@pc207 ~]# yum -y install vsftpd
[root@pc207 ~]# cp /home/UserB/tools-1.2.3.tar.gz* /var/ftp/
[root@pc207 ~]# cp /home/UserB/UserB.pub /var/ftp/
[root@pc207 ~]# service vsftpd start      
[root@svr7 ~]# wget ftp://192.168.4.207/tools-1.2.3*
[root@svr7 ~]# wget ftp://192.168.4.207/UserB.pub
[root@svr7 ~]# gpg --import UserB.pub                      //導入作者的公鑰資訊
[root@svr7 ~]# gpg --verify tools-1.2.3.tar.gz.sig tools-1.2.3.tar.gz      

繼續閱讀