gpg
[功能]
GPG是加密和數字簽名的免費工具,大多用於加密信息的傳遞。除了僅用密碼加密外,GPG最大的不一樣是提供了「公鑰/私鑰」對。利用你的「公鑰」別人加密信息再也不須要告訴你密碼,隨時隨地都能發送加密信息。而這種加密是單向的,只有你的「私鑰」能解開加密。數字簽名又是另外一大使用方向。經過簽名認證,別人能確保發佈的消息來自你,並且沒有通過修改。
[原理]
對稱密鑰加密經常使用的算法DES、Triple DES或IDEA加密,MD5。對稱密鑰加密通訊雙方持有一樣的密鑰對密文進行解密。
公共密鑰加密在報文和網絡方面的應用已成爲流行。RSA實際上用於公共密鑰加密,它是當前所能獲得的最強的公共密鑰算法。公共密鑰包含兩個同屬於一方的密鑰:一個是公共密鑰,它被全部人所共享;另外一個是私有密鑰,歸我的祕密中存。與對稱密鑰加密不一樣,公共密鑰加密對加密與解密使用兩把密鑰。一把是祕密的,這是私有密鑰,用來對密文解密。密文自己由公共密鑰產生,公共密鑰分發給要發送加密信息給你的人。其餘人如何獲得你的公共密鑰?很容易,發佈它便可。你—私有密鑰的全部者,是唯一能對信息進行解密的人。
數字簽名經常使用公共密鑰加密來產生簽名,如 RSA和DSA。用公共密鑰產生數字簽名與信息加密的工做相反。信息經過hash函數發送。hash處理後的信息用私有密鑰加密。一旦數據用私有密鑰加密,任何持有公共密鑰的人都能檢驗,它是用私有密鑰產生的,這樣,數據就被驗證了。所以,任何持有公共密鑰的人均可以進行檢驗。這裏的hash函數用於產生數字簽名。Hash函數(散列函數)是一個提取信息和產生一個固定長度的信息個性特徵的數學函數。不管要進行hash方法的信息有多大,輸出的長度都同樣。簡言之,就是將hash處理後的信息用私鑰加密,其它人用公鑰解密恢復成功(恢復成的應該是hash處理的結果?)表示加密的人就是你也就是數字簽名的驗證就成功了。
[舉例]
**對稱加密和解密
這裏,先簡單介紹使用gpg進行對稱加密和解密,後面重點介紹公鑰加密和數字驗證。
*對稱加密myfile:
#gpg -c myfile
這樣,會提示你輸入兩次密碼,而後生成myfile的加密文件myfile.gpg,注意不能對目錄加密,能夠用-o選項指定輸出文件名稱。
*解密對稱加密的文件:
#gpg -o mydecrypt -d myfile.gpg
這樣,會提示你輸入解密密碼,輸入以後,將會解密相應的文件,經過-o指定生成的解密文件,-d指定被解密的文件。
**
**公鑰加密相關
*生成鑰匙對:
[root@lv-k ~]# gpg --gen-key
輸入以後,輸出和交互提示以下所示:
#####################如下爲輸出以及交互##############################
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: 已建立目錄‘/root/.gnupg’
gpg: 新的配置文件‘/root/.gnupg/gpg.conf’已創建
gpg: 警告:在‘/root/.gnupg/gpg.conf’裏的選項於這次運行期間未被使用
gpg: 鑰匙環‘/root/.gnupg/secring.gpg’已創建
gpg: 鑰匙環‘/root/.gnupg/pubring.gpg’已創建
請擇您要使用的密鑰種類:
(1) DSA 和 ElGamal (默認)
(2) DSA (僅用於簽名)
(5) RSA (僅用於簽名)
您的擇?[Enter] <====輸入
DSA 密鑰對會有 1024 位。
ELG-E 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(2048)[Enter] <====輸入
您所要求的密鑰尺寸是 2048 位
請設定這把密鑰的效期限。
0 = 密鑰永不過時
= 密鑰在 n 天后過時
w = 密鑰在 n 周後過時
m = 密鑰在 n 月後過時
y = 密鑰在 n 年後過時
密鑰的效期限是?(0)[Enter]
密鑰永遠不會過時
以上正確嗎?(y/n)y <====輸入
您須要一個用戶標識來辨識您的密鑰;本軟件會用真實姓名、註釋和電子郵件地址組合
成用戶標識,以下所示:
「Heinrich Heine (Der Dichter) 」
真實姓名:quietheart <====輸入
電子郵件地址:quiet_heart000@126.com <====輸入
註釋:test <====輸入
您定了這個用戶標識:
「quietheart (test) 」
更改姓名(N)、註釋(C)、電子郵件地址(E)或肯定(O)/退出(Q)?o <====輸入
您須要一個密碼來保護您的私鑰。
請輸入密碼:<====輸入
請再輸入一次密碼:<====輸入
咱們須要生成大量的隨機字節。這個時候您能夠多作些雜事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會得到足夠的熵數。
++++++++++.+++++++++++++++.++++++++++.++++++++++++++++++++++++++++++.++++++++++++++++++++.+++++++++++++++++++++++++.++++++++++++++++++++>+++++.+++++........................................+++++
咱們須要生成大量的隨機字節。這個時候您能夠多作些雜事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會得到足夠的熵數。
+++++++++++++++.+++++++++++++++.++++++++++++++++++++.+++++++++++++++++++++++++..++++++++++.+++++.+++++..++++++++++.++++++++++.++++++++++..+++++++++++++++..+++++>++++++++++>+++++...........................................................................+++++^^^
gpg: /root/.gnupg/trustdb.gpg:創建了信任度數據庫
gpg: 密鑰 DDBA2DEA 被標記爲絕對信任
公鑰和私鑰已經生成並經簽名。
gpg: 正在檢查信任度數據庫
gpg: 須要 3 份勉強信任和 1 份徹底信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已簽名: 0 信任度:0-,0q,0n,0m,0f,1u
pub 1024D/DDBA2DEA 2011-06-14
密鑰指紋 = 790A 0F2D 6826 61F3 A749 0724 DBB2 C0A5 DDBA 2DEA
uid quietheart (test)
sub 2048g/2BBE2C91 2011-06-14
#####################以上爲輸出以及交互##############################
這裏,首先要一個鑰匙對才能公鑰加密,這裏根據系統狀況不一樣,可能內容爲英文。須要用戶交互輸入的地方,都經過"<====輸入"這個標記指出來了。若對輸入信息有所改動 ,可把 ~/.gnupg 目錄下除 options 之外的文件刪除 ,再運行 gpg --gen-key 命令 ,或者使用 gpg 的 edit 選項 . 鑰匙對放在 ~/.gnupg 目錄下 .
*查看已有的鑰匙:
[root@lv-k .gnupg]# gpg --list-keys
輸入以後,輸出以下:
#####################如下爲輸出以及交互##############################
/root/.gnupg/pubring.gpg
------------------------
pub 1024D/DDBA2DEA 2011-06-14
uid quietheart (test)
sub 2048g/2BBE2C91 2011-06-14
#####################以上爲輸出以及交互##############################
這裏,
pub(公匙)--- public key , ID : DDBA2DEA
sub(私匙)--- secret key or private key , ID : 2BBE2C91
假如沒使用root進行操做,可能會輸出以下信息:"gpg: Warning: using insecure memory!" 警告沒有鎖定內存頁 ,通常是鏈接網上操做有關安全方面的問題 ,沒有事情的 ,能夠做這樣的改動 "# chmod 4755 /usr/bin/gpg"。
*使用gpg密鑰進行加密和解密文件:
下面咱們經過一個具體的例子,演示公鑰加密,私鑰解密的過程。這裏加/解密方式採用RSA算法,公匙與私匙是互補,理論上是不可破解,也沒有人嘗試成功過。假設咱們已經使用前面的方法生成了密鑰對。
1,首先查看待加密的文件以下:
[root@lv-k gpg_test]# ls
mygpgtest
[root@lv-k gpg_test]# cat mygpgtest
#####################如下爲輸出##############################
hello!
welcome come to here
today is 2011-06-14
#####################以上爲輸出##############################
2,公鑰加密過程
1)使用以下命令加密文件:
[root@lv-k gpg_test]# gpg -ea -r quietheart mygpgtest
這裏,使用的密鑰就是前面建立的quietheart,咱們可使用"gpg --list-keys"來查看咱們能夠選擇用來加密的公鑰。這裏選項"-e"實際就是"--encrypt"表示加密數據;"-a"表示建立ASCII的輸出(能夠不用這個選項,這樣生成的文件就不是ASCII的內容了,而且文件後綴是*.gpg);"-r"指定加密的用戶id名稱。
2)查看加密以後的文件:
[root@lv-k gpg_test]# ls
mygpgtest mygpgtest.asc
[root@lv-k gpg_test]# cat mygpgtest.asc
#####################如下爲輸出##############################
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.5 (GNU/Linux)
hQIOA6PEEmMrviyREAf9HCZ5xIlSppneZ6i7Hquxb7xUjn1q0W5ccVek6x0DxSbH
q55ugy6CmCc/excLC/zblf9qHsNDcZvMV3jjD95gu78NR1lsyDtpG9r5bX/MuPii
KxYc3oOvGNmDUO9F/g3ul9VCu/rsIkQvwxZHaEGXR3G6XH/tmhKZcjNNIxb1qQiq
xE7O0NCXEhp8FpOPozY1MzZ7wv4rXLujTrGl13sNqjSVLgp1mcUzuMRCtenttXpg
q1sXDJ7FXkxQy7UvO8eMmMzPqkFm7KfLYZjkXrYo5ZhG+nfXqs3/HSuJ1fVe8m4/
+PVW1Uw2QtkfJiZVxOj60cV0lcK/P1bJHah5xEtbnQf/fI1jitFIuoJjTkoCNbeO
Sq6Kr0+LjJMaXmlCeA6kZ7RXLHak/O5aR0BpXJCPUBIEFVnu6dftolO6JPcqMbW+
5oI4NHaJunHz0eTgOuFBsV3EVjYmH7rabV832ikY0MARWRh/b/osUv+Ht9BlUHaY
pLoGPXkLeSsCDo714Z/dufLGUEFcNxx/QAmhWGiKH4MacMvKBVE+2uzcMAWqnyEW
Oaz0bI893YUtbQbti2rdQgVdHHXjWCmQ2YnMWv4pSBAwK7rPOrtehmdsmiOuit6x
FHvHPldc1o38u0Jg4d0LjCv/rRBdQwasJzr46dwJBOCv5rQ9Rkuul+6rhFQGns1G
jtJxAZIWwu8ZqD572a3jYVbIl/qBAW+dM3Fnt9NRqFUJVtdrd/AIAFm/OIwlVACF
Cbmjyxqliv/WYxNdJFL+IsHMX2Ury9TT2LMaDXxez6LRPMxJxRZSFhuyoYAqDYKT
NI1LSODDRZ1WYlCOkPXlrSfzyig=
=IN1g
-----END PGP MESSAGE-----
#####################以上爲輸出##############################
這裏,咱們能夠看出,加密以後生成mygpgtest.asc文件,其中的內容已經通過加密了。
3,公鑰解密過程
1)使用以下命令進行解密:
[root@lv-k gpg_test]# gpg -o mydecrypt --decrypt mygpgtest.asc
#####################如下爲輸出##############################
您須要輸入密碼,才能解開這個用戶的私鑰:「quietheart (test) 」
2048 位的 ELG-E 密鑰,鑰匙號 2BBE2C91,創建於 2011-06-14 (主鑰匙號 DDBA2DEA)
請輸入密碼:<=====輸入密碼
您須要輸入密碼,才能解開這個用戶的私鑰:「quietheart (test) 」
2048 位的 ELG-E 密鑰,鑰匙號 2BBE2C91,創建於 2011-06-14 (主鑰匙號 DDBA2DEA)
gpg: 由 2048 位的 ELG-E 密鑰加密,鑰匙號爲 2BBE2C9一、生成於 2011-06-14
「quietheart (test) 」
#####################以上爲輸出##############################
這裏,使用-o指定輸出文件,使用--decrypt指定待解密文件。咱們能夠看出,解密的時候,咱們須要輸入密碼,才能解密成功,而密碼就是以前咱們建立鑰匙對時候輸入的那個密碼。注意,這裏由於生成密鑰,加密,解密都在一個機器上進行,因此能夠成功解密,若是把加密以後的文件拿到別的機器上面,就沒法解密了,若是想要在其它機器上面解密,咱們須要把本地私鑰導出,發送給待解密的機器,而後在解密的機器上把剛剛導出的私鑰導入,就好了.後面會說到如何解密。若是想要別人和你使用這個加密的方法通訊,須要把你的公鑰導出,發給別人,而後他們把這個公鑰導入,在使用前面加密的方法用這個公鑰加密數據而且發送給你,你再用你本身的私鑰解密,獲得解密後的原始數據,這也是公鑰加密通訊使用的經常使用方法。後面會詳細講述如何導出本地的公鑰和私鑰,以及如何在其它機器上面導入以前導出的密鑰。
2)查看解密生成的文件
[root@lv-k gpg_test]# ls
mydecrypt mygpgtest mygpgtest.asc
[root@lv-k gpg_test]# cat mydecrypt
hello!
welcome come to here
today is 2011-06-14
[root@lv-k gpg_test]#
*導出(備份)公鑰:
[root@lv-k gpg_test]# gpg -o mypubkey --export DDBA2DEA
這裏使用格式「 gpg -o keyfilename --export KeyID」,使用-o指定生成的導出文件名稱,使用--export指定想要導出的密鑰ID, 若是沒有KeyID則是備份全部的公鑰,若是加上-a的參數則輸出文本格式的信息,不然輸出的是二進制格式信息。導出的公鑰,能夠發佈,其它人只要導入你發佈的公鑰,就能用這個公鑰加密數據而且發送給你,你再用你本身的私鑰解密,獲得解密後的原始數據,這也是公鑰加密通訊使用的經常使用方法。
*以文本方式導出公鑰:
[root@lv-k gpg_test]# gpg -a -o mypubkeyascii --export DDBA2DEA
導出的文件mypubkeyascii能夠查看其內容,這裏內容以下:
mypubkeyascii
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQGiBE320yYRBACUvTPS5Jxv2xamVudHL//PBhJESyUzHQcGtb/CPzyAkOaNVQ7U
V0DEjd+m61SAv7wwWItn9D3fOjZ09EdGY/9mHeVEOGLPdB7Seo28UyRtr6vHCrrl
1qHBS6I6jQ/iATDg+07O9hgDp5eCebI4aNyRGeRARx0t5vKguIF+FEzmIwCghWM8
toTSnP/bC1VePRXEZ9Uw+OkD/0cYIH2AZIKdbtjQ9J6F7AtgiPqRnjiTL7mOj6Xa
ncjThX9XGH5DUMoqR6Gaq9/eDtlefMwHCweiqdm1TNnvU/b7qDpw1TjxVLkHHVZk
8F4f8LsSkJNuLiqOwXwOJkuevQZ+Y3quFl3nsOtURSx5nuKkekp4toOWSe3fEFWd
BQN5A/9Cxj55KWXzzYD8v+z0xiC3HvIWgUp0GTfcjSOfdhs9xtKe33LuGy7hoEt0
TfQpTnz8Il1cbHHYvtmAaaGrwBnBxoYrLrH5WrHx1n34ZdOszYK5p/yKW+g+0eLt
dv/f4uXEhfPInOk21X5PRGFcyNo3fMVGIHo1S8oiEX4fuEvwWrQqcXVpZXRoZWFy
dCAodGVzdCkgPHF1aWV0X2hlYXJ0MDAwQDEyNi5jb20+iGAEExECACAFAk320yYC
GwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDbssCl3bot6o2bAJ918FqgoPMs
4eIQOWBDVs5sS9hSbgCfTbOggNKPJtCPJq4zr/jaPctE7Qi5Ag0ETfbTLBAIAKUn
cibGAlBwN5nW2NCN52oXWAsIXTDnUP7FmKi8K6B2PO7Bex2e95f44iOyBtLo73KF
vH64Wbl7wGQ0IOnn/AQbivoa9oaBi4+2mf9PbGMvo2Nrii8xcvBfvrh8Q7XsRoOH
obKv3inOGvxb0fkdUn1WkyYGtWCIl5aK8b1jUACuB6Sbdxtkeg3DrQp3BZjxgkVa
etgPnj70AtJfTFnn5WSIkBGJq2pbs7E9wNQC7NvIe62DHJj1nsPJg/d9ZdFWnQiW
HO6ik3bjRBLR4Iy82cjVOI2JmiaKVlPktphZ9id5F/a3BlcaOF5wSovE4ssHdZGN
cvk4QPLr0X9G43ZBTmcAAwUH/07bUjqWu61uIq5XryRK99pTNLlwd1AdsB/HTgFp
UJxSZ7MRbtozvdBPVKFehAzZ13YSjiES0f1L3oGBsEeEhCPyHY+N80R+zuLMeZTx
6kFNLlm/PEFNrnFpqGPEJZ/1HRyt+hTsfFCFM4nYzhul7s10XKGiHHN1wUMc/ixt
+tmk/dD6IA/QnhI1WUMzF2XgJ3Ql4ZmLCSNV7CXPEt044J8ZnuTT+HwO4AX7bfSt
PTpyi7LMD/BVfOikczvf38Bz/IUnXi8x1pjBglZBE7jvkqc+nqe7BYQ/ga27c374
zQDIAmAXcZ0TR35T+ZiyavQHKiRSuAG0q3T2oO74yvb8AgmISQQYEQIACQUCTfbT
LAIbDAAKCRDbssCl3bot6uJ8AJ4h8ShsY6DLjmJjitl+8iHnh5tZQACeOqHsQXjr
dei6gV8vMB87xwbWe5E=
=ynen
-----END PGP PUBLIC KEY BLOCK-----
通常,許多地方網上經過這個文本方式發佈公鑰。
*導出(備份)私鑰:
[root@lv-k gpg_test]# gpg -o mysubkey --export-secret-keys 2BBE2C91
若是沒KeyID則是備份全部的私鑰,-o表示輸出到文件mysubkey中,若是加上-a的參數則輸出文本格式的信息,不然輸出的是二進制格式信息。
*導入私鑰:
gpg --import mysubkey
輸入以後,輸出以下:
#####################如下爲輸出##############################
gpg: 密鑰 DDBA2DEA:私鑰已導入
gpg: /home/lv-k/.gnupg/trustdb.gpg:創建了信任度數據庫
gpg: 密鑰 DDBA2DEA:公鑰「quietheart (test) 」已導入
gpg: 合計被處理的數量:1
gpg: 已導入:1
gpg: 讀取的私鑰:1
gpg: 導入的私鑰:1
#####################以上爲輸出##############################
這裏,若是導入公鑰命令是同樣的,不過指定的文件應該是"mypubkey"了。這個命令是另一臺機器上運行的,導入私鑰以後那個機器就可使用這個私鑰解密數據了。通常來講咱們都是發佈公鑰讓人導入,而不是導入私鑰匙。
實踐發現,
*導入私鑰以後,另一臺機器直接能夠用對應的公鑰加密,而不用導入公鑰;這時候另外的那個機器也能夠導出公鑰,不過有一行內容和原始機器公共鑰匙內容不同,可是用這個公鑰加密的數據也能夠用原始的機器解密出來的。
*導入公鑰以後,另一臺主機沒法導出私鑰,能夠導出公鑰,導出內容和原來同樣。使用公鑰加密以後,沒法解密(由於沒有私鑰)。
不管導入的是公鑰仍是私鑰,導入以後能夠經過gpg --list-keys來查看導入的結果,並且從結果能夠看到沒有導入的那個配對(或者私鑰或者公鑰)的KeyID。
**
**簽名與驗證
簽名做用是驗證實文、加密文件、密鑰是來自正確的發送者的,沒通過其它人的修改。簽名使用的也是密鑰對,與加密操做相同。只是在結果上,點不一樣。它只是在文件最後添上加密的驗證信息(簽名)。一旦文件有所改變,簽名驗證就會出錯。好比咱們ubuntu安裝軟件時,首先要用事先保存的密鑰(大多從hkp://keyserver.ubuntu.com得到)驗證軟件源的簽名,以保證咱們連的是正確的安全的下載服務器。
*查看以前的目錄和文件以下:
[root@lv-k gpgtest]# pwd
/root/tmpTrans/gpgtest
[root@lv-k gpgtest]# ls
mydecrypt
[root@lv-k gpgtest]# cat mydecrypt
hello!
welcome come to here
today is 2011-06-14
*生成簽名,過程以下:
[root@lv-k gpgtest]# gpg -o mydecrypt.sig -s mydecrypt
#####################如下爲輸出##############################
您須要輸入密碼,才能解開這個用戶的私鑰:「quietheart (test) 」
1024 位的 DSA 密鑰,鑰匙號 DDBA2DEA,創建於 2011-06-14
請輸入密碼: <====這裏輸入你的密碼
#####################以上爲輸出##############################
[root@lv-k gpgtest]# ls
mydecrypt mydecrypt.sig
這裏能夠看到生成了mydecrypt.sig文件(其內容是亂碼),其中,mydecrypt是原文件,mydecrypt.sig包含了原文件和簽名,是二進制的,這個命令會要求你輸入私鑰密碼。
*產生文本格式的簽名
[root@lv-k gpgtest]# gpg -o mydecrypt.sig --clearsign mydecrypt
#####################如下爲輸出##############################
您須要輸入密碼,才能解開這個用戶的私鑰:「quietheart (test) 」
1024 位的 DSA 密鑰,鑰匙號 DDBA2DEA,創建於 2011-06-14
請輸入密碼: <====這裏輸入你的密碼
#####################以上爲輸出##############################
[root@lv-k gpgtest]# cat mydecrypt.sig
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
hello!
welcome come to here
today is 2011-06-14
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQFOCFkQ27LApd26LeoRAvC+AJ9xp1HLT6zup7AZtan5qpQrpQyn1QCfV0Zy
HG+z+/hxfrbs9pzo6ODYDG4=
=o1+k
-----END PGP SIGNATURE-----
這裏,經過以上可知產生的mydecrypt.sig一樣包含原文件和簽名,文件是文本格式的,原文件不變。解開和驗證簽名的方法
*驗證簽名:
[root@lv-k tmp]# gpg --verify mydecrypt.sig
gpg: 於 2011年06月27日 星期一 17時58分39秒 CST 建立的簽名,使用 DSA,鑰匙號 DDBA2DEA
gpg: 無缺的簽名,來自於「quietheart (test) 」
這裏,在驗證以前,必須導入文件做者的公鑰,對於分離式簽名最後還要加上原文件參數(後面會講到)。
*將簽名文件恢復
[root@lv-k tmp]# gpg -o my --decrypt mydecrypt.sig
gpg: 於 2011年06月27日 星期一 17時58分39秒 CST 建立的簽名,使用 DSA,鑰匙號 DDBA2DEA
gpg: 無缺的簽名,來自於「quietheart (test) 」
[root@lv-k tmp]# cat my
hello!
welcome come to here
today is 2011-06-14
這裏,不須要輸入密碼,生成的文件my和原來的文件名稱同樣。
*簽名並加密:
[root@lv-k gpgtest]# gpg -o mydecrypt.sig -ser quietheart mydecrypt
#####################如下爲輸出##############################
您須要輸入密碼,才能解開這個用戶的私鑰:「quietheart (test) 」
1024 位的 DSA 密鑰,鑰匙號 DDBA2DEA,創建於 2011-06-14
請輸入密碼: <====這裏輸入你的密碼
#####################以上爲輸出##############################
這裏,沒法直接經過"gpg --verify mydecrypt.sig"對文件mydecrypt.sig進行驗證。而是在解密恢復文件的時候直接驗證了,後面會說到。
*恢復加密的簽名文件:
[root@lv-k gpgtest]# gpg -o my --decrypt mydecrypt.sig
#####################如下爲輸出##############################
您須要輸入密碼,才能解開這個用戶的私鑰:「quietheart (test) 」
2048 位的 ELG-E 密鑰,鑰匙號 2BBE2C91,創建於 2011-06-14 (主鑰匙號 DDBA2DEA)
請輸入密碼: <====這裏輸入你的密碼,輸入以後提示自動消失
gpg: 由 2048 位的 ELG-E 密鑰加密,鑰匙號爲 2BBE2C9一、生成於 2011-06-14
「quietheart (test) 」
gpg: 於 2011年06月27日 星期一 18時11分27秒 CST 建立的簽名,使用 DSA,鑰匙號 DDBA2DEA
gpg: 無缺的簽名,來自於「quietheart (test) 」
#####################以上爲輸出##############################
[root@lv-k gpgtest]# cat my
hello!
welcome come to here
today is 2011-06-14
這裏,解密以後進行驗證,而不是直接驗證,由於不能經過"gpg --verify mydecrypt.sig"直接驗證加密的簽名文件。
*分離式簽名:
[root@lv-k gpgtest]# gpg -o mydecrypt.sig -ab mydecrypt
#####################如下爲輸出##############################
您須要輸入密碼,才能解開這個用戶的私鑰:「quietheart (test) 」
1024 位的 DSA 密鑰,鑰匙號 DDBA2DEA,創建於 2011-06-14
請輸入密碼: <====這裏輸入你的密碼,輸入以後提示自動消失
#####################以上爲輸出##############################
[root@lv-k gpgtest]# cat mydecrypt.sig
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQBOCZDP27LApd26LeoRArTQAJ9q13/4jVvJbg5f83lNnoC1Gq111wCfWRm8
1awHtUl2sN9SWNt0qNoFQHw=
=ySnh
-----END PGP SIGNATURE-----
這裏,mydecrypt.sig僅包含簽名,分離式簽名的意思是原文件和簽名是分開的。b選項表示分離式簽名detach-sign.
*對分離的簽名進行驗證:
[root@lv-k gpgtest]# gpg --verify mydecrypt.sig mydecrypt
gpg: 於 2011年06月28日 星期二 16時29分03秒 CST 建立的簽名,使用 DSA,鑰匙號 DDBA2DEA
gpg: 無缺的簽名,來自於「quietheart (test) 」
這裏,和前面的驗證方式不一樣,由於簽名和數據文件是分離的,因此驗證時,指明簽名文件"mydecrypt.sig"的同時也要指明相應的數據文件"mydecrypt"。由於簽名是分離的,因此不須要使用"--decrypt"進行恢復,若是恢復那麼也僅僅是打印出簽名的信息(這裏"恢復"的時候不用指明數據文件,會提醒你指出數據文件的位置)。
**
[其餘]
**編輯公鑰
能夠對公鑰進行編輯,這裏沒具體實踐,大體過程以下:
#gpg --edit-key someone
someone是別人的用戶id,輸入以後,出現命令提示符號。
>fpr <===輸入這個表示查看someone的指紋,覈對信息真實性,這樣以後簽署。
>sign <===輸入這個簽署公鑰,這樣之後再使用它加密的時候不會產生警告了。
>check <===輸入這個,檢查someone已有的鑰匙的簽名。
>quit <===輸入這個,退出交互,可能會提示你保存以前的設置。
**
redis