2016-05-23 49 views
2

一個可以註冊使用PGP文件,使用clearsign選項後,通過CMD執行以下命令GnuPG的clearsign選項如何工作?

gpg --clearsign filename

確實的GnuPG用來ClearSign會選擇什麼樣的算法,使得即使在執行簽名之後,輸出簽名是可讀fromat?

我讀了一篇說明clearsign選項如何工作的手冊,但我無法理解它。 It is available here.

根據手冊,裝甲被應用於使簽名不可讀的簽名。但問題是如何清除簽名可讀。

但是,如何控制由散列算法和加密函數組成的簽名輸出爲明文?

通過使用散列和加密功能,如何保證輸出可讀取的ASCII字符範圍?

+0

「控制簽名的輸出」是什麼意思?給定一個消息和散列加公鑰/私鑰,簽名是唯一確定的(對於RSA)。 –

+0

我會說裝甲使它可讀(對於郵件客戶端),底層的二進制版本可能很容易在一些文件格式中出現亂碼。 –

回答

5

簽名總是二進制的,真的。 clearsign僅意味着簽名的計算不是通過壓縮的消息,而是通過原始消息(如果是文本格式)計算的。這意味着收件人仍然可以讀取已簽名的郵件(在標頭----BEGIN PGP SIGNED MESSAGE----之後),這意味着在郵件中收件人仍然可以在不通過PGP程序的情況下閱讀郵件。收件人仍然需要這樣的程序來驗證簽名。

由於簽名總是二進制的,但有時需要以文本格式發送,這意味着簽名被編碼爲base64,以確保它也是文本格式。如果你沒有做clearsign,但是sign,整個消息首先被壓縮,然後被簽名,並且總數被base64編碼。該消息對任何人都是可讀的(在base64解碼和解壓縮之後)。所以標準的ASCII裝甲編碼被用來保證可打印的ASCII輸出。但是這個最後的編碼只是爲了方便,底層的二進制形式是經過驗證的實際簽名。