我們平時(shí)都聽過(guò)非對(duì)稱加密呀潭,公鑰和私鑰昔逗,簽名驗(yàn)證降传,但這些證書都是怎么得到的呢?本篇文章會(huì)解答這些問(wèn)題勾怒。
背景介紹
加密的一個(gè)簡(jiǎn)單但又實(shí)用的任務(wù)就是發(fā)送加密電子郵件婆排。多年來(lái),為電子郵件進(jìn)行加密的標(biāo)準(zhǔn)一直是PGP(Pretty Good Privacy)笔链。程序員Phil Zimmermann特別為電子郵件的保密編寫的PGP段只。
這個(gè)軟件非常好用,迅速流傳開來(lái)鉴扫,成了許多程序員的必備工具赞枕。但是,它是商業(yè)軟件,不能自由使用炕婶。
作為PGP的替代姐赡,如今已經(jīng)有一個(gè)開放源代碼的類似產(chǎn)品可供使用。GPG(Gnu Privacy Guard)柠掂,它不包含專利算法项滑,能夠無(wú)限制的用于商業(yè)應(yīng)用。
本文將會(huì)介紹文件加密陪踩,至于GPG的其他用途杖们,比如郵件加密,請(qǐng)參考這個(gè)網(wǎng)站https://help.ubuntu.com
安裝
本人使用mac電腦肩狂,因此使用brew安裝的摘完,很簡(jiǎn)單,打開終端傻谁,輸入brew install gpg
就行了孝治,至于其他的平臺(tái),可以自行搜索审磁。
bogon:~ XXXX$ brew install gpg
==> Downloading https://homebrew.bintray.com/bottles/gnupg-1.4.20.el_capitan.bot
######################################################################## 100.0%
==> Pouring gnupg-1.4.20.el_capitan.bottle.tar.gz
?? /usr/local/Cellar/gnupg/1.4.20: 53 files, 5.4M
安裝完成后谈飒,鍵入命令gpg --help
:
bogon:~ XXXX$ gpg --help
gpg (GnuPG) 1.4.20
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
支持的算法:
公鑰:RSA, RSA-E, RSA-S, ELG-E, DSA
對(duì)稱加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
壓縮:不壓縮, ZIP, ZLIB, BZIP2
語(yǔ)法:gpg [選項(xiàng)] [文件名]
簽名、檢查态蒂、加密或解密
默認(rèn)的操作依輸入數(shù)據(jù)而定
指令:
-s, --sign [文件名] 生成一份簽名
--clearsign [文件名] 生成一份明文簽名
-b, --detach-sign 生成一份分離的簽名
-e, --encrypt 加密數(shù)據(jù)
-c, --symmetric 僅使用對(duì)稱加密
-d, --decrypt 解密數(shù)據(jù)(默認(rèn))
--verify 驗(yàn)證簽名
--list-keys 列出密鑰
--list-sigs 列出密鑰和簽名
--check-sigs 列出并檢查密鑰簽名
--fingerprint 列出密鑰和指紋
-K, --list-secret-keys 列出私鑰
--gen-key 生成一副新的密鑰對(duì)
--delete-keys 從公鑰鑰匙環(huán)里刪除密鑰
--delete-secret-keys 從私鑰鑰匙環(huán)里刪除密鑰
--sign-key 為某把密鑰添加簽名
--lsign-key 為某把密鑰添加本地簽名
--edit-key 編輯某把密鑰或?yàn)槠涮砑雍灻? --gen-revoke 生成一份吊銷證書
--export 導(dǎo)出密鑰
--send-keys 把密鑰導(dǎo)出到某個(gè)公鑰服務(wù)器上
--recv-keys 從公鑰服務(wù)器上導(dǎo)入密鑰
--search-keys 在公鑰服務(wù)器上搜尋密鑰
--refresh-keys 從公鑰服務(wù)器更新所有的本地密鑰
--import 導(dǎo)入/合并密鑰
--card-status 打印智能卡狀態(tài)
--card-edit 更改智能卡上的數(shù)據(jù)
--change-pin 更改智能卡的 PIN
--update-trustdb 更新信任度數(shù)據(jù)庫(kù)
--print-md 算法 [文件]
使用指定的散列算法打印報(bào)文散列值
選項(xiàng):
-a, --armor 輸出經(jīng) ASCII 封裝
-r, --recipient 某甲 為收件者“某甲”加密
-u, --local-user 使用這個(gè)用戶標(biāo)識(shí)來(lái)簽名或解密
-z N 設(shè)定壓縮等級(jí)為 N (0 表示不壓縮)
--textmode 使用標(biāo)準(zhǔn)的文本模式
-o, --output 指定輸出文件
-v, --verbose 詳細(xì)模式
-n, --dry-run 不做任何改變
-i, --interactive 覆蓋前先詢問(wèn)
--openpgp 行為嚴(yán)格遵循 OpenPGP 定義
--pgp2 生成與 PGP 2.x 兼容的報(bào)文
(請(qǐng)參考在線說(shuō)明以獲得所有命令和選項(xiàng)的完整清單)
范例:
-se -r Bob [文件名] 為 Bob 這個(gè)收件人簽名及加密
--clearsign [文件名] 做出明文簽名
--detach-sign [文件名] 做出分離式簽名
--list-keys [某甲] 顯示密鑰
--fingerprint [某甲] 顯示指紋
請(qǐng)向 <gnupg-bugs@gnu.org> 報(bào)告程序缺陷杭措。
請(qǐng)向 <i18n-zh@googlegroups.com> 反映簡(jiǎn)體中文翻譯的問(wèn)題。
這些幫助信息非常有用钾恢,下邊演示的很多功能也是基于上邊這些參數(shù)的手素。這里把他們列出來(lái),方便在使用的時(shí)候查詢瘩蚪。
如果能夠顯示上邊的信息泉懦,說(shuō)明GPG安裝成功了
生成密鑰
利用上邊的幫助信息中--gen-key 生成一副新的密鑰對(duì)
可以生成密鑰。
安裝成功后疹瘦,使用gen-ken參數(shù)生成自己的密鑰崩哩。在終端中輸入:
gpg --gen-key
回車后,會(huì)看到:
gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: 已創(chuàng)建目錄‘/Users/machao/.gnupg’
gpg: 新的配置文件‘/Users/machao/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/Users/machao/.gnupg/gpg.conf’里的選項(xiàng)于此次運(yùn)行期間未被使用
gpg: 鑰匙環(huán)‘/Users/machao/.gnupg/secring.gpg’已建立
gpg: 鑰匙環(huán)‘/Users/machao/.gnupg/pubring.gpg’已建立
請(qǐng)選擇您要使用的密鑰種類:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (僅用于簽名)
(4) RSA (僅用于簽名)
您的選擇言沐?
第一段是版權(quán)聲明邓嘹,然后讓用戶自己選擇加密算法。默認(rèn)選擇第一個(gè)選項(xiàng)险胰,表示加密和簽名都使用RSA算法吴超。我們輸入1
,然后回車
RSA 密鑰長(zhǎng)度應(yīng)在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸鸯乃?
這一步要讓我們輸入密鑰長(zhǎng)度鲸阻,長(zhǎng)度越長(zhǎng)越安全,默認(rèn)為2048跋涣。我們輸入2048
回車
您所要求的密鑰尺寸是 2048 位
請(qǐng)?jiān)O(shè)定這把密鑰的有效期限。
0 = 密鑰永不過(guò)期
<n> = 密鑰在 n 天后過(guò)期
<n>w = 密鑰在 n 周后過(guò)期
<n>m = 密鑰在 n 月后過(guò)期
<n>y = 密鑰在 n 年后過(guò)期
密鑰的有效期限是鸟悴?(0)
如果密鑰只是個(gè)人使用陈辱,并且你很確定可以有效保管私鑰,建議選擇第一個(gè)選項(xiàng)细诸,即永不過(guò)期沛贪。注意,如果想設(shè)置在2年后過(guò)期震贵,那么應(yīng)該輸入2y
,然后回車 回答完上面三個(gè)問(wèn)題以后利赋,系統(tǒng)讓你確認(rèn)。
密鑰于 日 10/ 8 11:20:32 2017 CST 過(guò)期
以上正確嗎猩系?(y/n)y
到這里媚送,我們對(duì)要生成的密鑰的配置已經(jīng)完成了,然后我們還需要一個(gè)標(biāo)識(shí)寇甸,
您需要一個(gè)用戶標(biāo)識(shí)來(lái)辨識(shí)您的密鑰塘偎;本軟件會(huì)用真實(shí)姓名、注釋和電子郵件地址組合
成用戶標(biāo)識(shí)拿霉,如下所示:
“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”
按照要求依次輸入就行了
真實(shí)姓名:
電子郵件地址:
注釋:
我們這里假設(shè)輸入的信息為:
真實(shí)姓名:Zhang San
電子郵件地址:zhangsan@163.com
注釋:
回車后:
您選定了這個(gè)用戶標(biāo)識(shí):
“Zhang San <zhangsan@163.com>”
更改姓名(N)吟秩、注釋(C)、電子郵件地址(E)或確定(O)/退出(Q)绽淘?
我們輸入o
,回車后
您需要一個(gè)密碼來(lái)保護(hù)您的私鑰涵防。
然后輸入密碼,再次確認(rèn)密碼后沪铭,
我們需要生成大量的隨機(jī)字節(jié)壮池。這個(gè)時(shí)候您可以多做些瑣事(像是敲打鍵盤、移動(dòng)
鼠標(biāo)伦意、讀寫硬盤之類的)火窒,這會(huì)讓隨機(jī)數(shù)字發(fā)生器有更好的機(jī)會(huì)獲得足夠的熵?cái)?shù)硼补。
.+++++
...+++++
我們需要生成大量的隨機(jī)字節(jié)驮肉。這個(gè)時(shí)候您可以多做些瑣事(像是敲打鍵盤、移動(dòng)
鼠標(biāo)已骇、讀寫硬盤之類的)离钝,這會(huì)讓隨機(jī)數(shù)字發(fā)生器有更好的機(jī)會(huì)獲得足夠的熵?cái)?shù)。
....................+++++
...........+++++
gpg: /Users/XXXX/.gnupg/trustdb.gpg:建立了信任度數(shù)據(jù)庫(kù)
gpg: 密鑰 74A64469 被標(biāo)記為絕對(duì)信任
公鑰和私鑰已經(jīng)生成并經(jīng)簽名褪储。
gpg: 正在檢查信任度數(shù)據(jù)庫(kù)
gpg: 需要 3 份勉強(qiáng)信任和 1 份完全信任卵渴,PGP 信任模型
gpg: 深度:0 有效性: 1 已簽名: 0 信任度:0-,0q鲤竹,0n浪读,0m昔榴,0f,1u
gpg: 下次信任度數(shù)據(jù)庫(kù)檢查將于 2017-10-08 進(jìn)行
pub 2048R/74A64469 2016-10-08 [有效至:2017-10-08]
密鑰指紋 = 2187 78CA 2E78 83C2 039C E47B D94A 622A 74A6 5569
uid Zhang San <zhangsan@163.com>
sub 2048R/490E5BC8 2016-10-08 [有效至:2017-10-08]
請(qǐng)注意上面的字符串"74A64469"碘橘,這是"用戶ID"的Hash字符串互订,可以用來(lái)替代"用戶ID"。到此為止痘拆,我們已經(jīng)完成了生成公鑰和私鑰的任務(wù)了,文件在/Users/XXXX/.gnupg/pubring.gpg
仰禽。
這時(shí),最好再生成一張"撤銷證書"纺蛆,以備以后密鑰作廢時(shí)吐葵,可以請(qǐng)求外部的公鑰服務(wù)器撤銷你的公鑰。
gpg --gen-revoke 74A64469
然后按照下邊的步驟依次執(zhí)行就行了
sec 2048R/74A64469 2016-10-08 Zhang San <zhangsan@163.com>
要為這把密鑰建立一份吊銷證書嗎桥氏?(y/N)y
請(qǐng)選擇吊銷的原因:
0 = 未指定原因
1 = 密鑰已泄漏
2 = 密鑰被替換
3 = 密鑰不再使用
Q = 取消
(也許您會(huì)想要在這里選擇 1)
您的決定是什么温峭?0
請(qǐng)輸入描述(可選);以空白行結(jié)束:
>
吊銷原因:未指定原因
(不給定描述)
這樣可以嗎识颊? (y/N)y
您需要輸入密碼诚镰,才能解開這個(gè)用戶的私鑰:“Zhang San <zhangsan@163.com>”
2048 位的 RSA 密鑰,鑰匙號(hào) 74A64469祥款,建立于 2016-10-08
已強(qiáng)行使用 ASCII 封裝過(guò)的輸出清笨。
已建立吊銷證書。
請(qǐng)把這個(gè)文件轉(zhuǎn)移到一個(gè)可隱藏起來(lái)的介質(zhì)(如軟盤)上刃跛;如果壞人能夠取得這
份證書的話抠艾,那么他就能讓您的密鑰無(wú)法繼續(xù)使用。把這份憑證打印出來(lái)再藏
到安全的地方也是很好的方法桨昙,以免您的保存媒體損毀而無(wú)法讀取检号。但是千萬(wàn)
小心:您的機(jī)器上的打印系統(tǒng)可能會(huì)在打印過(guò)程中把這些數(shù)據(jù)臨時(shí)在某個(gè)其他
人也能夠看得到的地方!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
Comment: A revocation certificate should follow
iQEfBCABAgAJBQJX+GqQAh0AAAoJENlKYip0plVp0q8H/jDfnm8ElhgN+5dgn7uu
wrbgDMBrtFzuxqGPPlTTJLHprUQUuQBG3uMPjQCCh52fMY8DUAjlcsAcynpMYLll
2mdHPdWC7SDK/qPhZ2AGO+iJ333I3Ir4vYfjEdNetyD6ZfBpk7m1rqz3BYtBey5N
6FSrLXyaNu88ftwozqxBqRZE2b09boafX5y/UrgHpco13a8DdredSN49D0d3EwxZ
e78reDEpE4kwh4E0xAEXnX4ILDCSnTz4S8wGFV8uddB4Snyh8m+HiuDlp7h9kYw+
c5BMSgSG/DxFAdIpetfdMMVtsAMTTy+nfMvIXWNFjARSEErW5Fz0TqkFhyT3Ntxu
glE=
=ee65
-----END PGP PUBLIC KEY BLOCK-----
查看密鑰列表
list-keys參數(shù)列出系統(tǒng)中已有的密鑰
gpg --list-keys
回車后:
/Users/XXXX/.gnupg/pubring.gpg
--------------------------------
pub 2048R/74A64469 2016-10-08 [有效至:2017-10-08]
uid Zhang San <zhangsan@163.com>
sub 2048R/490E5BC8 2016-10-08 [有效至:2017-10-08]
第一行顯示公鑰文件名(pubring.gpg)蛙酪,第二行顯示公鑰特征(4096位齐苛,Hash字符串和生成時(shí)間),第三行顯示"用戶ID"桂塞,第四行顯示私鑰特征凹蜂。
如果你要從密鑰列表中刪除某個(gè)密鑰,可以使用delete-key參數(shù)阁危。
gpg --delete-key [用戶ID]
輸出密鑰
公鑰文件(.gnupg/pubring.gpg)以二進(jìn)制形式儲(chǔ)存玛痊,armor參數(shù)可以將其轉(zhuǎn)換為ASCII碼顯示。
gpg --armor --output public-key.txt --export [用戶ID]
"用戶ID"指定哪個(gè)用戶的公鑰狂打,output參數(shù)指定輸出文件名(public-key.txt)擂煞。
類似地,export-secret-keys參數(shù)可以轉(zhuǎn)換私鑰趴乡。
gpg --armor --output private-key.txt --export-secret-keys
打開public-key.txt
private-key.txt
就能看到公鑰和私鑰了对省。
上傳公鑰
公鑰服務(wù)器是網(wǎng)絡(luò)上專門儲(chǔ)存用戶公鑰的服務(wù)器蝗拿。send-keys參數(shù)可以將公鑰上傳到服務(wù)器
gpg --send-keys [用戶ID] --keyserver hkp://subkeys.pgp.net
使用上面的命令,你的公鑰就被傳到了服務(wù)器subkeys.pgp.net蒿涎,然后通過(guò)交換機(jī)制蛹磺,所有的公鑰服務(wù)器最終都會(huì)包含你的公鑰。
由于公鑰服務(wù)器沒(méi)有檢查機(jī)制同仆,任何人都可以用你的名義上傳公鑰萤捆,所以沒(méi)有辦法保證服務(wù)器上的公鑰的可靠性。通常俗批,你可以在網(wǎng)站上公布一個(gè)公鑰指紋俗或,讓其他人核對(duì)下載到的公鑰是否為真。fingerprint參數(shù)生成公鑰指紋岁忘。
gpg --fingerprint [用戶ID]
輸入密鑰
除了生成自己的密鑰辛慰,還需要將他人的公鑰或者你的其他密鑰輸入系統(tǒng)。這時(shí)可以使用import參數(shù)干像。
gpg --import [密鑰文件]
為了獲得他人的公鑰帅腌,可以讓對(duì)方直接發(fā)給你,或者到公鑰服務(wù)器上尋找麻汰。
gpg --keyserver hkp://subkeys.pgp.net --search-keys [用戶ID]
正如前面提到的速客,我們無(wú)法保證服務(wù)器上的公鑰是否可靠,下載后還需要用其他機(jī)制驗(yàn)證.
加密和解密
我們演示加密和解密的過(guò)程五鲫,這個(gè)過(guò)程是對(duì)文件進(jìn)行的溺职。假如我們有一個(gè)test.txt
文件。這個(gè)文件中的內(nèi)容為:
張飛位喂,我愛(ài)你浪耘,今晚約嗎?
床前明月光塑崖,疑是地上霜七冲。
舉頭望明月,低頭思故鄉(xiāng)规婆。
encrypt參數(shù)用于加密澜躺。我們使用下邊的命令對(duì)這個(gè)文件進(jìn)行加密。
gpg --recipient 74A64469 --output test_en.txt --encrypt test.txt
然后我們?cè)?code>test.txt的同一目錄下得到了test_en.txt
聋呢。我們打開后可以看到加密后的數(shù)據(jù)為:
8501 0c03 50c4 def5 490e 5bc8 0107 f901
58c7 1221 33ee cc6c 4b43 8d5d a1f5 1a14
a5ac d406 7f24 a6bf 342c 3ba1 6f95 6d1b
8aae c45a 9a25 dece 7973 f5e0 44a0 7d43
7701 bd7b 02cc 3287 b65e 5915 3a67 2046
2d96 42c0 98fa d468 3187 f340 674a 772c
a280 7ab9 73d1 5feb 28c7 bc64 f102 e978
0ca5 ff7e ff1f a0f8 ba6a ea43 cc68 cf15
acff dfe9 fba3 7576 5c78 fc4a 8ed6 232b
6313 8246 ee38 70c2 1b0c 46fb 2064 662e
2977 79a7 64d8 81dd e55f 5b77 edb8 0a0c
caa0 9df0 4db2 a1e5 fe5f e16f 7be5 03b4
f741 d1a9 e429 d909 b94b a539 b0cc cc08
70b7 8d1f 4212 ba89 00ed fce4 ba97 6b51
8546 8bfa 1129 9862 d779 0382 bab0 ae0f
4855 bf75 82bf 743d 6b9e 4072 b47f 551d
143a 9355 67b9 dc7a 1511 4d0d 79bc d8d2
b001 f69c af7c 5cd2 6f2c 7d68 8ebc 80d8
07fb d120 fd2b 4a76 774c 8b82 e5e3 3414
de28 f947 16ff be94 ee01 ae40 8deb 6786
bf4f c602 5efb 8ae0 55f6 6cc2 55dc a6de
a8e0 0239 7de4 43b5 3344 f5fb 5e8d 9e26
0961 ddae 4f57 be79 6a1b b7fd 1f0b d510
e7ad 9c0c cc7e c75f 06d1 4da7 2ae5 a7d2
02b6 d93c 729b bf94 31dd a627 1423 1f08
db2b e6a3 a9f2 8165 bc16 8641 3430 dbaf
0885 4df6 e5cc f542 d3e6 60e2 91ae c0e7
69d7 8507 9d54 c25d 3a3d 4e63 79dd 8eaf
84
哈哈苗踪,如果給你一串這玩意颠区,誰(shuí)能看懂削锰? 這也就是為什么編譯別的軟件的文件的時(shí)候顯示這內(nèi)容了,都是進(jìn)行加密過(guò)的文件毕莱,只有進(jìn)行解密后才能讀出數(shù)據(jù)器贩。
recipient參數(shù)指定接收者的公鑰颅夺,output參數(shù)指定加密后的文件名,encrypt參數(shù)指定源文件蛹稍。運(yùn)行上面的命令后吧黄,test_en.txt
就是已加密的文件,可以把它發(fā)給對(duì)方唆姐。
使用下邊的命令進(jìn)行解密
gpg test_en.txt
依次完成下邊的命令:
bogon:Desktop XXXX$ gpg test_en.txt
您需要輸入密碼拗慨,才能解開這個(gè)用戶的私鑰:“Zhang San <zhangsan@163.com>”
2048 位的 RSA 密鑰,鑰匙號(hào) 490E5BC8奉芦,建立于 2016-10-08 (主鑰匙號(hào) 74A64469)
gpg: 由 2048 位的 RSA 密鑰加密赵抢,鑰匙號(hào)為 490E5BC8、生成于 2016-10-08
“Zhang San <zhangsan@163.com>”
gpg: test_en.txt:未知的后綴名
請(qǐng)輸入新的文件名 [test.txt]: test2.txt
然后在test2.txt
中就看到了解密后的數(shù)據(jù)声功。
簽名
有時(shí)烦却,我們不需要加密文件,只需要對(duì)文件簽名先巴,表示這個(gè)文件確實(shí)是我本人發(fā)出的其爵。sign參數(shù)用來(lái)簽名。
gpg --sign test.txt
然后生成了一個(gè)test.txt.gpg
文件伸蚯,我們打開這個(gè)文件后摩渺,發(fā)現(xiàn)這也是一個(gè)二進(jìn)制的數(shù)據(jù),這并不是加密后的數(shù)據(jù)剂邮,與上邊的二進(jìn)制數(shù)據(jù)不一樣证逻。如果想生成ASCII碼的簽名文件,可以使用clearsign參數(shù)
gpg --clearsign test.txt
然后生成了一個(gè)test.txt.asc
文件抗斤,打開后可以看出:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
張飛囚企,我愛(ài)你,今晚約嗎瑞眼?
床前明月光龙宏,疑是地上霜。
舉頭望明月伤疙,低頭思故鄉(xiāng)银酗。
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJX+Jl5AAoJENlKYip0plVpDIMIAJscuAXq/+g+kBVqSAhL59jr
Lbu04uBdyYYbdqokjzSzuQm0ybw5fURQZs7HC5X2A2SgwP5vs/ekWOnS7G2SxBI4
vnrHef3+cFiEbkj4OAySNbUeY3ftbg333JFkAbyA5bD7DHlEHrUvWRWVzLEWGCJ7
FgfbpqtiyFbLbkimXgVP4GhMA+TaP3XCDa1GgI2sJY9+q0GpX7mz6CBbTz7C/ORk
GgoUFVx5tyVO8E7PHqGOcLTwwpJtsq0geGMn4QaG5qUY9j851zkVOXSVeUo3y7nY
AqRaLqHBBN7xOKs0IQLAJz/5vCEvBEjqAR59NtwA1h9JAUx20VkVO2eu+YaepjU=
=vkVW
-----END PGP SIGNATURE-----
如果想生成單獨(dú)的簽名文件,與文件內(nèi)容分開存放徒像,可以使用detach-sign參數(shù)黍特。
gpg --detach-sign test.txt
是一個(gè)二進(jìn)制的數(shù)據(jù),如果想采用ASCII碼形式锯蛀,要加上armor參數(shù)
gpg --armor --detach-sign test.txt
簽名+加密
上一節(jié)的參數(shù)灭衷,都是只簽名不加密。如果想同時(shí)簽名和加密旁涤,可以使用下面的命令翔曲。
gpg --local-user [發(fā)信者ID] --recipient [接收者ID] --armor --sign --encrypt test.txt
local-user參數(shù)指定用發(fā)信者的私鑰簽名迫像,recipient參數(shù)指定用接收者的公鑰加密,armor參數(shù)表示采用ASCII碼形式顯示瞳遍,sign參數(shù)表示需要簽名闻妓,encrypt參數(shù)表示指定源文件。
驗(yàn)證簽名
我們收到別人簽名后的文件掠械,需要用對(duì)方的公鑰驗(yàn)證簽名是否為真由缆。verify參數(shù)用來(lái)驗(yàn)證
gpg --verify test.txt.asc test.txt
說(shuō)明
如果錯(cuò)誤之處,還請(qǐng)給予指出猾蒂。謝謝