非對稱加密與GPG/PGP

来源:https://www.cnblogs.com/xuyaowen/archive/2018/12/03/GPG-PGP.html
-Advertisement-
Play Games

最近瀏覽博客的時候,經常會看到博主展示出自己的公鑰,於是對 GPG/PGP 產生興趣。下麵簡單記錄相關文章的鏈接,方便以後瞭解。 簡介: 1991年,程式員Phil Zimmermann為了避開政府的監視,開發了加密軟體PGP。因為這個軟體非常好用,迅速流傳開來成為許多程式員的必備工具。但是,它是商 ...


最近瀏覽博客的時候,經常會看到博主展示出自己的公鑰,於是對 GPG/PGP 產生興趣。下麵簡單記錄相關文章的鏈接,方便以後瞭解。

簡介:

1991年,程式員Phil Zimmermann為了避開政府的監視,開發了加密軟體PGP。因為這個軟體非常好用,迅速流傳開來成為許多程式員的必備工具。但是,它是商業軟不能自由使用。所以,自由軟體基金會決定,開發一個PGP的替代品取名為GnuPG,因此GPG就誕生了。GPG是GNU Privacy Guard的縮寫,是自由軟體基金會的GNU計劃的一部分。它是一種基於密鑰的加密方式,使用了一對密鑰對消息進行加密和解密,來保證消息的安全傳輸。一開始,用戶通過數字證書認證軟體生成一對公鑰和私鑰。任何其他想給該用戶發送加密消息的用戶,需要先從證書機構的公共目錄獲取接收者的公鑰,然後用公鑰加密信息,再發送給接收者。當接收者收到加密消息後,他可以用自己的私鑰來解密。

公鑰、私鑰:

https://blog.csdn.net/forever_2015/article/details/76040311

對稱加密與非對稱加密:

https://www.cnblogs.com/jfzhu/p/4020928.html

GPG/PGP:

http://www.ruanyifeng.com/blog/2013/07/gpg.html 阮老師的文檔

https://www.gnupg.org/howtos/zh/index.html 官方中文文檔

上面這些鏈接,都是很好的文檔,只要稍微看看,就應該可以瞭解什麼是GPG , 如果鏈接失效了。也可以按照提綱來進行搜索瞭解!

更新===========2018年12月05日15:12:01====== 下麵這個文章,比阮老師寫的還要好!

使用 GnuPG 實現電子郵件加密和數字簽名——PGP 30分鐘簡明教程

 PGP (Pretty Good Privacy) 是由 Phil Zimmermann (之所以提這個名字是因為這位仁兄背後有一段故事,有興趣可以找找他的八卦)於 1991 開發的一個用於數據加密和數字簽名的程式,由於被廣泛應用,以至於後來形成一個開放的標準 OpenPGP,這個標準也是目前最為常用的郵件加密和簽名的方式。而 GnuPG 則是實現了該標準的一個開源免費程式,本文將會簡單介紹如何使用 GnuPG 管理鑰匙、加密/解密文件和電子郵件、數字簽名文件和電子郵件。篇幅有點長,一共分兩章,不過內容是很簡單的。@ivarptr

加密和數字簽名的簡單原理 下載並安裝 GnuPG 使用(圖形化)工具管理鑰匙 郵件的加密和數字簽名 使用命令行管理鑰匙 使用命令行加密解密文件 使用命令行對文件進行數字簽名 GnuPG 的更多指南

一、加密和數字簽名的簡單原理

首先每位用戶都需要用 GnuPG 程式生成地球上惟一的一對鑰匙,分別稱為公鑰和私鑰(即 public key 和 private/secret key)。公鑰用於加密、私鑰用於解密。使用公鑰加密過的信息只能由配對的私鑰解開。這種加密方式叫做非對稱加密。

非對稱加密的過程是:如果A君要發送信息給B君,首先B君得把自己的公鑰扔出來,A君得獲取B君的公鑰後用B君的公鑰加密信息併發送過去,B君收到(加過密的)信息使用自己的私鑰解密就可以還原信息了。

在數字簽名時,私鑰用於簽名、公鑰用於核對簽名。

數字簽名的過程是:如果A君要發送信息給B君,信息首先會被計算出一個指紋值(比如MD5值),然後A君使用自己的私鑰加密信息和這個指紋值(這個過程稱為簽名)併發送出去,接受者B君收到信息之後使用A君的公鑰來解密並重新核對一次信息的指紋值,這樣B君就可以核對信息有無被篡改以及是否真的為A君所發出的了。

二、下載並安裝 GnuPG

GnuPG 是一個集鑰匙管理、加密解密、數字簽名於一身的工具,對於 Linux 系統,一般可以在系統本身的軟體源找到 GnuPG,比如對於 ArchLinux 可以使用如下命令安裝:

$ sudo pacman -S gnupg

對於 Windows 系統可以下載免費開源程式包 GPG4Win,建議下載完全版,裡面既包含了 GnuPG 命令行工具,又有圖形化的鑰匙管理工具 Kleopatra 和郵件客戶端程式 Claws Mail。對於Mac OSX 系統則可以使用 GPGTools。

更多的相關工具可以在這裡找到。

三、使用(圖形化)工具管理鑰匙

上一節提到,在不同的平臺下所使用的管理工具各不相同,幸運的是他們的功能大同小異,而且界面簡單,相信只要你一運行則不用看教程都會使用。下麵就提一下使用要點:

seahorse

[圖1] Linux Gnome 桌面環境自帶的鑰匙管理工具 seahorse

1、生成鑰匙對。一般點擊“文件”菜單就會找到“新建PGP鑰匙”的選項,跟著提示輸入你的名字(建議使用你常用的網名)、email地址以及備註(可以不填)就會生成一個屬於你自己的鑰匙對。期間會提示你輸入一個密碼,這個密碼是用於保護你的私鑰,建議使用比較複雜的密碼。

2、發佈你的公鑰。因為你的朋友要發送加密信息給你則必須要先獲取你的公鑰,所以,作為一個有禮貌的 GnuPG 用戶應該先發為敬。Internet上有很多免費的公鑰伺服器,你可以把你的公鑰發佈到隨便一個伺服器,它們之間會自動同步(最長可能需要幾小時或者幾天)。在管理工具里選定你的鑰匙對,然後選擇類似“發佈”或者“遠程-同步”之類的選項即可。在發佈的時候工具可能會詢問你使用哪個公鑰伺服器,正如剛纔所說的,隨便選一個就可以了。

3、獲取你朋友的公鑰(或者讓朋友獲取你的公鑰)。在管理工具里選擇類似“搜索”或者“遠程-查找鑰匙”,在搜索框里填寫對方的email地址或者生成鑰匙時所填寫的名字,然後點擊搜索就可以找到對方的公鑰。作為練習,你可以搜索自己的公鑰,如果搜索沒有結果則可能時因為伺服器還沒同步,可以過幾分鐘再試試。或者搜索我的公鑰,我公鑰的 email 地址為 [email protected]。點擊選中搜索結果,然後再選“導入”即完成。

4、簽收(sign)公鑰。為了安全起見,獲取你朋友的公鑰之後,還需要跟對方核對一下這個公鑰是否真的為他所擁有(因為可能存在假冒的情況)。核對的方法是選中你朋友的公鑰,再選擇類似“屬性”或者“詳細信息”的選項,其中你可以看到這個鑰匙的指紋值,你可以通過電話、聊天工具或者email跟你的朋友核對一下,如果指紋值相同,則點擊“簽收這個鑰匙(sign this key)”,這樣就表示你正式可用這個公鑰了。如果上一步你導入了我的公鑰,則看看指紋值是否為“0D24 0A94 A86C 7B83 3F7C 200E 1CAF 0CB0 72E7 5B05“,這個是我鑰匙的指紋值,無誤的話就可以點擊簽收了。(補充:為了避免跟“數字簽名”這個名詞相衝突,這裡我把“sign”書寫為“簽收”,在一些教程里可能會翻譯為“簽名鑰匙”)

好了,下麵我們就可以開始郵件加密和數字簽名嚕。

四、郵件加密和數字簽名

實現郵件加密和數字簽名一般需要使用郵件客戶端軟體,現在一般比較完善的郵件客戶端工具都內置集成 OpenPGP 的功能,即本身就可以無縫地使用 GnuPG。比如 Evolution、KMail、Mozilla Thunderbird,對於 Windows 和 Mac OSX 系統,我比較推薦 Thunderbird,這也是一個開源免費程式。谷歌告訴我 Windows 下的 Outlook 和 Live Mail 也支持但我沒有試驗過,如果不行又懶得下載 Thunderbird,那麼使用 GPG4Win 附帶的 Claws Mail 也是可以的。因為各個郵件客戶端的設置大同小異,下麵我以 Evolution 為例簡單介紹如何設置。

其實關鍵的設置只有一步,就是關聯你的 email 帳號和你的鑰匙id。在 Evolution 的帳號屬性里,轉到 Security 頁,在 OpenPGP Key Id 里輸入你的鑰匙的id(即生成鑰匙對時所填寫的名字)或者email地址即可。如下圖:

evolution-pgp-setting

[圖2] Evolution 的郵件帳號設置視窗

設置就這麼簡單。然後在每次寫 email 時點擊菜單的 Options 勾選 OpenPGP 簽名或者/以及加密,然後再發送即可。如下圖:

evolution-pgp-write

[圖3] Evolution 的書寫郵件視窗

對方收到郵件時,Evolution 會自動檢驗簽名或者自動解密郵件內容。需要註意的是,再發送加密郵件給你的朋友之前,你要先獲取他的公鑰(見本文第2節)。

小練習:嘗試用郵件客戶端發送一封簽名或者加密過的郵件給我:[email protected]

提示1:在簽名或者解密時,有可能會彈出一個視窗要求你輸入一個密碼,這個密碼就是生成鑰匙對時設置的密碼。

提示2:用網易郵箱收取簽過名(而未加密)的郵件時可能會顯示檢驗失敗,這是因為網易郵箱會在郵件末尾添加附件的下載地址,相當於更改了郵件的原始內容,所以簽名檢驗失敗是肯定的。

PGP 30分鐘簡明教程第二部分,簡單講解 GnuPG 命令行工具的使用方法,以及對文件進行加密和數字簽名。

五、使用命令行管理鑰匙

如果你想深入瞭解 GnuPG 的操作和原理,那麼使用命令行是一個很好的學習途徑。基本上,使用命令行管理鑰匙的要點跟圖形工具的操作是一一對應。

1、生成鑰匙對

$ gpg --gen-key

使用上面的命令可以生成地球上惟一的一對鑰匙對(註:命令行前的錢幣符號是提示符,不用輸入),運行後會詢問你幾個問題,首選是選擇鑰匙對的演算法:

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?

預設選擇 RSA 就可以了,輸入1並回車。然後選擇鑰匙的長度:

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

預設是 2048 位,直接回車。然後選擇鑰匙的有效期限:

Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)

預設是永遠有效的,如果你打算過一段時間就換一把新鑰匙,可以在此輸入期限,比如輸入30表示有效期為30天,數字後面可以加上單位,比如30m表示30個月,30y表示30年。如果你不知道這步有什麼作用,則直接回車。然後詢問你確定嗎?果斷輸入y並回車。

接下來是填寫一些個人信息:

Real name: ivarptr
Email address: [email protected]
Comment: ivarptr on Twitter

第1行輸入你的名字或者平常喜歡用的網名,比如我的是 ivarptr。
第2行輸入你的email地址,比如我上面輸入的是 [email protected]
第3行輸入一行備註,備註的作用是進一步標識自己的身份,比如你在姓名一行輸入“小明”,為了讓你的朋友更確切地知道是哪個小明,你可以輸入“你隔壁家的小明”。

這三行信息用於產生一個標識(uid),用來標識這個鑰匙對,在下麵的命令行里,就可以用名字或者email地址來指定這個鑰匙對。

雖然理論上這些信息是可以隨意輸入,而且也不會有人阻止你這麼做,不過當別人拿到你的公鑰時可能會搞不清誰對應誰,所以儘量使用別人分辨得清的名字(建議使用你常用的網名)和email地址。信息輸入完之後再輸入o並回車確定。

因為 GnuPG 的鑰匙(包括公鑰和私鑰)是保存在本機上的,如果有人或者黑客進入你的電腦把你的私鑰盜走了,那麼你的身份就有可能被冒充的危險。所以接下來你需要輸入一個密碼用於保護你的私鑰。這個密碼最好選擇一個稍微複雜一些的。

接下來就是等待程式生成鑰匙對了,這個過程根可能需要幾秒到幾分鐘時間,期間你可以去忙其他的事情。

2、查看本機鑰匙信息

上一步完成後,可以使用如下命令查看本機上的公鑰:

$ gpg --list-keys

輸出的結果跟下麵的類似:

/home/ivarptr/.gnupg/pubring.gpg
——————————–
pub 2048R/72E75B05 2013-04-17 [expires: 2015-04-17]
uid ivarptr (ivarptr on Twitter) <[email protected]>
sub 2048R/74F0F5F9 2013-04-17 [expires: 2015-04-17]  

從中我們可以看到剛纔生成的鑰匙對的公鑰部分,其中:

72E75B05 是這個公鑰的id,這個id跟uid都是用於標識這個公鑰的,因為uid是用戶隨便輸入的所以會有重覆的情況,因此在某些需要明確指定公鑰的命令,需要用id而不能用uid表示這個公鑰。另外在使用這個id表示一個鑰匙時,記得在前面加上”0x”,是零和字母XYZ的X,比如”0x72E75B05″ 2013-04-17 是生成這個公鑰的時間,後面括弧內的是有效期。

在實際應用中,因為要發送加密信息給你的朋友就需要對方的公鑰,所以在本機上可能會有多個朋友的公鑰,但私鑰往往只有一個,也就是自己的私鑰。使用下麵命令可以查看本機上的私鑰。

$ gpg –list-secret-keys

3、導出公鑰

為了將自己的公鑰扔給他人,你需要把公鑰導出成為一個文件:

$ gpg -a --output key.public --export UID

註:你要把其中的 UID 替換成你的名字或者email地址。

其中參數

-a 表示輸出文本文件格式。預設輸出是二進位格式,因為二進位格式不太方便在網路(比如論壇或者博客)上展示,所以推薦文本格式。 –output 指定輸出文件的名字,你可以更改為其他名字。 –export 表示執行輸出公鑰操作,後面的 UID 為你要輸出的公鑰的標識。

運行之後會在當前文件夾得到一個 key.public 文件,你可以使用文本編輯器或者 cat 命令查看裡面的內容:

$ cat key.public

內容大致如下:

-----BEGIN PGP PUBLIC KEY BLOCK-----Version: GnuPG v2.0.19 (GNU/Linux)  …………………… -----END PGP PUBLIC KEY BLOCK-----

公鑰導出之後,你可以通過各種方式把它發送給你的朋友,比如email或者聊天工具。而比較方便的是把公鑰發佈到公鑰伺服器。

4、把公鑰發佈到公鑰伺服器

公鑰伺服器用於儲存和發佈用戶的公鑰以便相互交流,這些服務都是免費的,GnuPG 預設的公鑰伺服器是 keys.gnupg.net,你可以在這裡找到更多的伺服器,一般來說不用指定公鑰伺服器,隨便發佈到一個軟體預設的就可以了,因為公鑰伺服器之間會自動同步。你也可以使用瀏覽器打開它們的網站,然後把你的公鑰複製粘貼上去。當然最直接的是通過命令行:

$ gpg --keyserver keys.gnupg.net --send-key ID

註:你要把其中的 ID 替換成你公鑰的id。

其中參數:

–keyserver 用於指定公鑰伺服器,沒有特殊需求的話是可以省略這個參數的,不過有些 GnuPG 版本可能需要指定這個參數才能正常工作。 –send-key 用於指定待發佈的公鑰的id。

好了,至此你已經學會生成鑰匙對以及發佈公鑰了。

六、使用命令行加密文件

下麵我們來做個試驗,嘗試導入作者的公鑰,然後使用該公鑰加密一個文件。通過這個試驗就可以學會怎樣獲取他人的公鑰並用之加密信息。

1、在公鑰伺服器搜索作者的公鑰並導入到本機

使用如下的命令可以搜索到我的公鑰:

$ gpg --keyserver keys.gnupg.net --search-key ivarptr

參數 –search-key 用於指定搜索關鍵字,可以是uid的名字或者email地址部分。結果大致如下:

gpg: searching for “ivarptr” from hkp server keys.gnupg.net

(1) ivarptr (ivarptr on Twitter) <[email protected]>

2048 bit RSA key 72E75B05, created: 2013-04-17

Keys 1-1 of 1 for “ivarptr”. Enter number(s), N)ext, or Q)uit >

如果有重名的情況,這裡會列出多條記錄。你可以輸入n並回車把搜索結果瀏覽個遍。當你看到id和uid都跟你要找的那個吻合時,輸入搜索結果前面顯示的數字就可以把相應的公鑰下載到本機。如上面的搜索結果,按數字1並回車就可以把我的公鑰導入到本機。輸入q並回車可退出搜索。

註:服務 keys.gnupg.net 背後是一組伺服器,它們之間的信息同步需要一定的時間,如果你剛剛提交了自己的公鑰,可能不會立即搜索就有結果,只要過一段時間(最長可能要幾小時或者幾天)就好了。

如果你確切知道要導入的公鑰的id,也可以跳過搜索這步而直接使用如下的命令導入:

$ gpg --keyserver keys.gnupg.net --recv-key 0x72E75B05

其中 0x72E75B05 是我公鑰的id,如果把它替換成你朋友的公鑰id則為導入你朋友的公鑰。

導入公鑰還有另一種方法:如果我把公鑰文件直接發送了給你,你也可以跳過公鑰伺服器。下麵假設我的公鑰文件 key.public 已發送給你,你運行如下命令就可以導入我的公鑰了:

$ gpg --import key.public

2、核對公鑰的指紋值並簽收公鑰

把對方的公鑰導入到本機後,就已經可以用它來加密信息或者用於校驗我的數字簽名。不過這樣每次操作時都會提示公鑰不可信,因為雖然你導入了我的公鑰,但存在導入冒充者的公鑰的可能性。所以你需要進一步跟我核對公鑰是否正確,然後簽收(sign key)它。

因為公鑰有可能出現冒牌貨,所以每個公鑰里都加入了指紋值,使用下麵命令可以查看指紋值:

$ gpg --fingerprint

列出的結果應該有一組如下所示:

pub 2048R/72E75B05 2013-04-17 [expires: 2015-04-17]

Key fingerprint = 0D24 0A94 A86C 7B83 3F7C 200E 1CAF 0CB0 72E7 5B05

uid ivarptr (ivarptr on Twitter) <[email protected]>

sub 2048R/74F0F5F9 2013-04-17 [expires: 2015-04-17]

其中 “0D24 0A94 A86C 7B83 3F7C 200E 1CAF 0CB0 72E7 5B05” 就是這個公鑰的指紋值。你應該通過打電話或者聊天工具等方式詢問對方並核對指紋值是否一致,如果吻合的話就說明你取得的是真貨了。

註:因為我不可能公佈我的電話 :D 所以如果你看到取回來的公鑰指紋值跟我博客這篇文章的一致,就可以當作是真貨了。當然如果是實際的朋友,一定要親口核對的。

確定取得的公鑰是真貨之後,使用如下命令對這個公鑰進行簽收(sign key):

$ gpg --sign-key ivarptr

運行上面的命令之後它提示你再確認一次指紋值,輸入y並按回車確定。

提示,如果發現獲取回來的是冒牌貨,可以使用如下的命令刪除它:

$ gpg --delete-keys ivarptr

3、加密一個文件

使用文本編輯器(比如記事本或者 vim、echo)創建一個名為 message.txt 的文件,裡面寫上任意一行文字,然後使用如下的命令加密它:

$ gpg -a --output message-ciper.txt -r [email protected] -e message.txt

其中參數:

-a 表示輸出文本文件格式。 –output 指定輸出(即加密後)的文件名。 -r 指定信息的接收者(recipient)公鑰的uid,可以是名字也可以是email地址。 -e 表示這次要執行的是加密(encrypt)操作。

執行完畢之後會在當前文件夾產生文件 message-ciper.txt,這個就是被加密之後的文件。

註:如果你要加密的是一個二進位文件,則可以省略 -a 參數,這樣產生的加密文件的體積會小一些。

小練習:現在你可以用 email 把加密後的文件寄給我,或者把裡面的內容複製然後粘貼到我博客的評論里,接下來我會解密然後回覆你。如果你希望我也以加密的形式回覆你,記得同時告訴我你的公鑰 id。

4、解密一個文件

現在假設我已經收到你寄過來的加密文件 message-ciper.txt,使用如下的命令解密:

$ gpg --output message-plain.txt -d message-ciper.txt

其中參數:

–output 指定輸出(即解密後)的文件名。 -d 表示這次要執行的是解密(decrypt)操作。

GnuPG 程式會自動使用我的私鑰來解密信息,最後得到一個跟原始內容一樣的文本文件 message-plain.txt。

至此,你已經學會使用 GnuPG 加密解密文件了。

提示1:導入公鑰、核對公鑰的指紋值、簽名公鑰這些操作你只需做一次,以後就可以重覆多次使用該公鑰加密信息併發送給對方。

提示2:如果你想自己體會整個加密和解密過程,可以用自己的公鑰加密信息,然後用自己的私鑰解密,只需把上面第3步的命令當中的接收者uid([email protected])更改為自己的uid即可。

七、使用命令行對文件進行數字簽名

下麵我會簽名一個文件,你可以嘗試檢驗一下這個簽名。

1、數字簽名一個文件的方法A

現在我有一個文本文件 message.txt,使用如下命令即可對它進行數字簽名:

$ gpg -a -b message.txt

其中參數

-a 表示輸出文本文件格式。 -b 表示以生成獨立的簽名文件的方式進行簽名。

命令執行完畢之後,會在當前文件夾里產生一個 message.txt.asc 的文件,這個文件即簽名。現在我應該把原信息文件 message.txt 連同簽名文件 message.txt.asc 一起寄給你,然後你使用如下命令檢驗:

$ gpg --verify message.txt.asc

如無意外,應該會看到如下兩行:

gpg: Signature made Thu 18 Apr 2013 12:35:00 AM CST using RSA key ID 72E75B05

gpg: Good signature from “ivarptr (ivarptr on Twitter) <[email protected]>”

其中最重要的是 “Good signature” 字樣,表示通過檢驗,否則表示沒通過檢驗(即意味著原信息的內容被篡改或者原信息不是我發出的)。

提示:如果你有多個私鑰,在簽名時需要加上參數 -u 指定私鑰的 uid。

2、數字簽名一個文件的方法B

如果不想生成一個獨立的簽名文件,則還可以用如下的命令進行簽名:

$ gpg -a --clearsign message.txt

跟方法A不同的地方是用參數 –clearsign 替代了參數 -b。參數 clearsign 表示將簽名和原信息合併在一起,並生成一個新文件。

命令運行後同樣會生成一個文件 message.txt.asc,內容如下:

-----BEGIN PGP SIGNED MESSAGE-----Hash: SHA1hello world, my key id is 72E75B05, finger is 0D24 0A94......5B05, check itout.-----BEGIN PGP SIGNATURE-----Version: GnuPG v2.0.19 (GNU/Linux)iQEcBAEBAgAGBQJRbuXuAAoJEByvDLBy51sFaY8IAKKnXX2JGI51mzYSakqvhNnriV2JLvokMkvyDuJQGeNDMim5W7P0/df+G4oO45B9b0iFx6DSQwZGeBjEGCXvCURauU2fdEqjaSarlrs0d4R1ihol8rCxkZwBYBBPjcvDkVwoVJJYS0zc3OYzMvWhb8mkQ72wQ0obX5LedUVrauG9OLkvq9aBKONr6Xlkldd133v3gb/Wzjf71CLYcRoJDpze2XBSkrGS0UxRp3WixJJK8xyfDfI9VHBaXEndCkgQ+Mpfq9nV5XAm3MKcPjlENq4gxGywHRpnwpW8N22VE6ZFEUFlXrh5C8hZfGaG/EcT21PeAbZYH8RcnYTbJ+s2nZ4==lhd6-----END PGP SIGNATURE-----

你可以複製這段文字然後保存到一個文件里,如 abc.txt,然後使用如下命令進行檢驗:

$ gpg --verify abc.txt

使用如下命令可以把原始信息提取出來:

$ gpg --output message-original.txt -d abc.txt

八、GnuPG 的更多指南

至此已經講完 GnuPG 的基本操作了,如果你還想更深入瞭解它,這裡有幾篇官方的文檔,推薦閱讀一下:

迷你Howto教程:http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto.html 迷你Howto教程(中文版): http://www.gnupg.org/howtos/zh/index.html The GNU Privacy Handbook http://www.gnupg.org/gph/en/manual.html

另外 wiki 對 OpenPGP 的講解也很有值得閱讀:

Pretty Good Privacy http://en.wikipedia.org/wiki/Pretty_Good_Privacy

還有一些本文未提到但會用得上的命令:

Quick’n easy gpg cheatsheet http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/

文本完,如有問題可以 @ivarptr 或者在評論中留言。謝謝!


 

資源來源於網路,保持更新,轉載請註明出處。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 寫在前面 這篇我們對用戶許可權進行極簡設計並保留其擴展性。首先很感謝大家的閱讀,前面六章我帶著大家快速入門了ASP.NET Core、ASP.NET Core的啟動過程源碼解析及配置文件的載入過程源碼解析並引入依賴註入的概念、Git的快速入門、Dapper的快速入門、Vue的快速入門。不知道大伙掌握的 ...
  • 我需要把資料庫中查詢出的數據,傳遞到另一個控制器的頁面去顯示。 https://blog.csdn.net/ma_jiang/article/details/8164212 看了上面這篇文章,反應過來用TempData傳遞。。反正只是顯示一下,不用存在多久。。很好用! ...
  • asp.net core很大的方便了跨平臺的開發者,linux的開發者可以使用apache和nginx來做反向代理,windows上可以用IIS進行反向代理。 反向代理可以提供很多特性,固然很好。但是還有複雜性,我們也可以使用windows service來直接啟動kestrel。 asp.net ...
  • 對於開發人員來說,編寫介面文檔需要消耗大量的時間,並且,手動編寫的文檔介面會由於需求的頻繁變動變得難以維護,這就需要一個在介面開發階段可以自動監測介面輸入參數,自動生成文檔的功能;由於 Swagger 插件的出現,這項工作幾乎可以實現完全的自動化。 ...
  • 我們都知道ORM全稱叫做Object Relationship Mapper,也就是可以用object來map我們的db,而且市面上的orm框架有很多,其中有一個框架 叫做dapper,而且被稱為the king of ORM。 一:為什麼選擇Dapper 1. 性能優越: 其實在各大網站上,我們大 ...
  • ASP.NET -- WebForm: ScriptManager 類 ...
  • [root@localhost ~]# ifconfig bond0:0 10.0.0.202 netmask 255.255.255.255 broadcast 10.0.0.255 up 摘自:http://www.wangxuejin.cn/post-247.html ...
  • 1.打開任務管理器切換到啟動Tab,在需要刪除的項目上點擊右鍵,點擊打開文件所在位置,這樣就找到了啟動項所在磁碟位置,可以根據需要決定是否刪除。 2.從註冊表中刪除在啟動中的註冊信息。 regedit 打開註冊表後,將註冊表定位於 \HKEY_LOCAL_MACHINE\SOFTWARE\Wow64 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...