1、什麼是GPG程序員
要了解什麼是GPG,就要先了解PGP。算法
1991年,程序員Phil Zimmermann爲了避開政府監視,開發了加密軟件PGP。這個軟件很是好用,迅速流傳開來,成了許多程序員的必備工具。可是,它是商業軟件,不能自由使用。因此,自由軟件基金會決定,開發一個PGP的替代品,取名爲GnuPG。這就是GPG的由來。安全
GPG有許多用途,本文主要介紹文件加密。本文的使用環境爲Linux命令行。若是掌握了命令行,Windows 或 Mac OS 客戶端,就很是容易掌握。服務器
2、使用GPG工具
1.建立密鑰加密
gpg --gen-key
第一段是版權聲明,而後讓用戶本身選擇加密算法。默認選擇第一個選項RSA,表示加密和簽名都使用RSA算法,目前來講,RSA算法是安全性最強的。咱們輸入1,而後回車spa
而後會讓咱們配置密鑰的加密長度。RSA 密鑰長度應在 1024 ~ 4096 位之間,默認是2048。密鑰的長度越長,安全性越高,可是加密和解密的速度就越慢。在此咱們使用默認配置2048。命令行
接下來設置密鑰的有效期,默認值0表明永不過時。而後會讓咱們確認密鑰的有效期,直接輸入y繼續。若是想設置在密鑰2年後過時,那麼應該輸入2y,而後回車,其餘類推。翻譯
輸入y確認以後,會要求咱們輸入我的信息來構造用戶ID,按順序爲:真實姓名、Email地址、註釋,其中註釋能夠爲空。3d
而後用戶ID就生成好了,此時會向你確認信息是否須要修改:輸入N修改姓名,C修改註釋,E修改Email,O表示確認,Q退出。我輸入字母O確認。
而後須要設置一個密碼來保護咱們的私鑰。這裏輸入密碼的時候,不會在控制檯上顯示出來。
而後咱們的公、私鑰就已經生成好並簽名完成。
公鑰:pubring.gpg,私鑰:secring.gpg。其中生成公鑰的密鑰ID是:7A701106,私鑰的ID爲:BBA3B083。其中密鑰ID即爲公鑰ID,也能夠做爲用戶ID,。這裏有兩處須要記住,第一就是設置的私鑰密碼,第二就是生成公鑰的密鑰ID。私鑰密碼是解密時須要的。密鑰ID是對文件進行加密須要的。
到此爲止,咱們已經完成了生成公鑰和私鑰的任務了。這時,最好再生成一張"撤銷證書",以備之後密鑰做廢時,能夠請求外部的公鑰服務器撤銷咱們的公鑰。
而後會讓咱們設置吊銷緣由,輸入描述(可選);以空白行結束:
0 = 未指定緣由 1 = 密鑰已泄漏 2 = 密鑰被替換 3 = 密鑰再也不使用 Q = 取消
這裏須要輸入咱們設置的私鑰保護密碼,才能解開私鑰
上面一段的翻譯,就是說讓咱們保護好這個證書文件。,翻譯過來大概是這個意思
請把這個文件轉移到一個可隱藏起來的介質(如軟盤)上;若是壞人可以取得這
份證書的話,那麼他就能讓您的密鑰沒法繼續使用。把這份憑證打印出來再藏
到安全的地方也是很好的方法,以避免您的保存媒體損毀而沒法讀取。可是千萬
當心:您的機器上的打印系統可能會在打印過程當中把這些數據臨時在某個其餘人也可以看獲得的地方!
2.密鑰管理
(1)參數列出系統中已有的密鑰
gpg -k 或者 gpg --list-keys //列舉公鑰 gpg -K 或者 gpg --list-secret-keys //列舉私鑰
(第一行是公鑰文件路徑,第二行是公鑰信息,第三行是用戶ID,第四行是私鑰信息。)
(2)刪除密鑰
gpg --delete-key [用戶ID] # 刪除公鑰
gpg --delete-secret-keys [用戶ID] # 刪除私鑰
(3)導出密鑰
公鑰和私鑰(gpg文件)都是以二進制形式存儲,使用--armor參數能夠導出爲ASCII碼形式。
導出公鑰文件
gpg --armor --export [用戶ID] --output public-key.txt
導出私鑰文件
gpg --armor --export-secret-keys --output private-key.txt
3.加密解密
(1)公鑰加密
假定有一個壓縮文件test.zip,咱們對它進行加密。
gpg --recipient [用戶ID] --output test.zip.gpg --encrypt test.zip
encrypt參數表示對文件進行加密,encrypt參數指定源文件。recipient參數指定接收者的公鑰,output參數指定加密後的文件名,
運行上面的命令後,test.zip.gpg就是已加密的文件。
(2)私鑰解密
對方收到加密文件之後,就用本身的私鑰解密。
gpg --output test2.zip --decrypt test.zip.gpg
output參數指定解密後生成的文件。decrypt參數指定須要解密的文件。解密文件保存爲test2.zip。
參考
https://www.jianshu.com/p/268064e67719
https://www.jianshu.com/p/1257dbf3ed8e