ios之如何生成密鑰,私鑰,簽名

我們平時(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)給予指出猾蒂。謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末犁功,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子婚夫,更是在濱河造成了極大的恐慌浸卦,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件案糙,死亡現(xiàn)場(chǎng)離奇詭異限嫌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)时捌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門怒医,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人奢讨,你說(shuō)我怎么就攤上這事稚叹。” “怎么了拿诸?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵扒袖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我亩码,道長(zhǎng)季率,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任描沟,我火速辦了婚禮飒泻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吏廉。我一直安慰自己泞遗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布席覆。 她就那樣靜靜地躺著史辙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上髓霞,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音畦戒,去河邊找鬼方库。 笑死,一個(gè)胖子當(dāng)著我的面吹牛障斋,可吹牛的內(nèi)容都是我干的纵潦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼垃环,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼邀层!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起遂庄,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寥院,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后涛目,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秸谢,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年霹肝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了估蹄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沫换,死狀恐怖臭蚁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讯赏,我是刑警寧澤垮兑,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站漱挎,受9級(jí)特大地震影響甥角,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜识樱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一嗤无、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怜庸,春花似錦当犯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春拓诸,著一層夾襖步出監(jiān)牢的瞬間侵佃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工奠支, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留馋辈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓倍谜,卻偏偏與公主長(zhǎng)得像迈螟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尔崔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 2018-Read-Record 記錄我的2018學(xué)習(xí)歷程 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念季春,然后通過(guò)一...
    NinthDay閱讀 11,268評(píng)論 8 105
  • 原文地址:數(shù)字證書原理,公鑰私鑰加密原理 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念洗搂,然后通過(guò)一個(gè)加密通信過(guò)程的例...
    淇濱杜隆坦閱讀 4,155評(píng)論 4 46
  • 先來(lái)看 PGP 和 GPG 程序的介紹。 PGP PGP(英語(yǔ):Pretty Good Privacy载弄,中文含義"...
    faner閱讀 67,183評(píng)論 2 21
  • 數(shù)字證書原理 - 無(wú)恙 - 博客園 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念蚕脏,然后通過(guò)一個(gè)加密通信過(guò)程的例子說(shuō)明...
    拉肚閱讀 1,659評(píng)論 0 3
  • 有一個(gè)人,他是你的天使侦锯,可是他常常無(wú)影無(wú)蹤驼鞭,許多人認(rèn)為,他們存不存在都無(wú)所謂尺碰≌踝兀可其實(shí)他們不存在了,我們就會(huì)感覺(jué)到生...
    早已放棄閱讀 193評(píng)論 0 0