GPG加密解密過程
1、Linux系統下
1.安裝
yum安裝html
[root@POC-ORACLE ~]# yum install gnupg
下載安裝包安裝linux
https://www.gnupg.org/download/index.en.html
查看gpg幫助redis
[root@POC-ORACLE ~]# gpg --help
gpg (GnuPG) 2.0.14 libgcrypt 1.4.5 Copyright (C) 2009 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. ...... 支持的算法: 公鑰:RSA, ELG, DSA 對稱加密:3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 壓縮:不壓縮, ZIP, ZLIB, BZIP2 語法:gpg [選項] [文件名] 簽名、檢查、加密或解密 默認的操做依輸入數據而定 指令: -s, --sign make a signature --clearsign make a clear text signature -b, --detach-sign 生成一份分離的簽名 -e, --encrypt 加密數據 -c, --symmetric 僅使用對稱加密 -d, --decrypt 解密數據(默認) --verify 驗證簽名 -k, --list-keys 列出密鑰 --list-sigs 列出密鑰和簽名 --check-sigs 列出並檢查密鑰簽名 --fingerprint 列出密鑰和指紋 -K, --list-secret-keys 列出私鑰 --gen-key 生成一副新的密鑰對 --delete-keys 從公鑰鑰匙環裏刪除密鑰 --delete-secret-keys 從私鑰鑰匙環裏刪除密鑰 --sign-key 爲某把密鑰添加簽名 --lsign-key 爲某把密鑰添加本地簽名 --edit-key 編輯某把密鑰或爲其添加簽名 --gen-revoke 生成一份吊銷證書 --export 導出密鑰 --send-keys 把密鑰導出到某個公鑰服務器上 --recv-keys 從公鑰服務器上導入密鑰 --search-keys 在公鑰服務器上搜尋密鑰 --refresh-keys 從公鑰服務器更新全部的本地密鑰 --import 導入/合併密鑰 --card-status 打印卡狀態 --card-edit 更改卡上的數據 --change-pin 更改卡的 PIN --update-trustdb 更新信任度數據庫 --print-md print message digests --server run in server mode 選項: -a, --armor 輸出經 ASCII 封裝 -r, --recipient USER-ID encrypt for USER-ID -u, --local-user USER-ID use USER-ID to sign or decrypt -z N set compress level to N (0 disables) --textmode 使用標準的文本模式 -o, --output FILE write output to FILE -v, --verbose 詳細模式 -n, --dry-run 不作任何改變 -i, --interactive 覆蓋前先詢問 --openpgp 行爲嚴格遵循 OpenPGP 定義 (請參考在線說明以得到全部命令和選項的完整清單) 範例: -se -r Bob [文件名] 爲 Bob 這個收件人簽名及加密 --clearsign [文件名] 作出明文簽名 --detach-sign [文件名] 作出分離式簽名 --list-keys [某甲] 顯示密鑰 --fingerprint [某甲] 顯示指紋 顯示幫助安裝成功
2.生成密鑰
[root@POC-ORACLE ~]# gpg --gen-key
gpg (GnuPG) 2.0.14; Copyright (C) 2009 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. 請選擇您要使用的密鑰種類: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (僅用於簽名) (4) RSA (僅用於簽名) 您的選擇? 1 RSA 密鑰長度應在 1024 位與 4096 位之間。 您想要用多大的密鑰尺寸?(2048)2048 您所要求的密鑰尺寸是 2048 位 請設定這把密鑰的有效期限。 0 = 密鑰永不過時 <n> = 密鑰在 n 天后過時 <n>w = 密鑰在 n 周後過時 <n>m = 密鑰在 n 月後過時 <n>y = 密鑰在 n 年後過時 密鑰的有效期限是?(0) 0 密鑰永遠不會過時 以上正確嗎?(y/n)y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" 真實姓名:lyzkey 電子郵件地址:lyzkey@qq.com 註釋: 您選定了這個用戶標識: 「lyzkey <lyzkey@qq.com>」 更改姓名(N)、註釋(C)、電子郵件地址(E)或肯定(O)/退出(Q)?o 您須要一個密碼來保護您的私鑰。
輸入兩次密碼 can't connect to `/root/.gnupg/S.gpg-agent': 沒有那個文件或目錄 咱們須要生成大量的隨機字節。這個時候您能夠多作些雜事(像是敲打鍵盤、移動 鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會得到足夠的熵數。 幾分鐘後完成生成 gpg: 密鑰 10A20444 被標記爲絕對信任 公鑰和私鑰已經生成並經簽名。 gpg: 正在檢查信任度數據庫 gpg: 須要 3 份勉強信任和 1 份徹底信任,PGP 信任模型 gpg: 深度:0 有效性: 1 已簽名: 0 信任度:0-,0q,0n,0m,0f,1u pub 2048R/10A20444 2018-04-29 密鑰指紋 = 9259 721A 61DA 6C18 3DBA 05CE 9068 BA24 10A2 0444 uid lyzkey <lyzkey@qq.com> sub 2048R/4B7C31FC 2018-04-29
另外一臺服務器上一樣建立密鑰算法
[root@POC-APP ~]# gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/F98FA558 2017-12-07 uid lyzkk <lyzkk@qq.com> sub 2048R/B3A4A822 2017-12-07
3.導出公鑰
[root@POC-APP ~]# gpg --armor --output lyzkk.asc --export F98FA558 F98FA558 爲pub key的ID
公鑰導出文件 可vi查看數據庫
[root@POC-APP ~]# ll lyzkk.asc -rw-r--r--. 1 root root 1703 12月 7 18:29 lyzkk.asc
4.導入公鑰
將公鑰發佈,導入另外一臺服務器服務器
[root@POC-ORACLE ~]# gpg --import lyzkk.asc gpg: 密鑰 F98FA558:公鑰「lyzkk <lyzkk@qq.com>」已導入 gpg: 合計被處理的數量:1 gpg: 已導入:1 (RSA: 1)
5.文件加密
給文件不加簽,加密ide
[root@POC-ORACLE ~]# gpg --recipient lyzkk --output install.log.asc --encrypt install.log gpg: B3A4A822:沒有證據代表這把密鑰真的屬於它所聲稱的持有者 pub 2048R/B3A4A822 2017-12-07 lyzkk <lyzkk@qq.com> 主鑰指紋: EE13 B668 8956 7766 EEF7 6DE2 67F5 B833 F98F A558 子鑰指紋: B6DA 032C 47B4 649E 1046 8CE4 FB2C 55EF B3A4 A822 這把密鑰並不必定屬於用戶標識聲稱的那我的。若是您真的知道自 己在作什麼,您能夠在下一個問題回答 yes。 不管如何仍是使用這把密鑰嗎?(y/N)y
上傳到有對應私鑰解密的服務器
ui
6.文件解密
[root@POC-APP ~]# gpg --decrypt install.log.asc --output install.log 用法:gpg [選項] --decrypt [文件名]
參數順序不能反this
[root@POC-APP ~]# gpg --output install.log --decrypt install.log.asc
您須要輸入密碼,才能解開這個用戶的私鑰:「lyzkk <lyzkk@qq.com>」 2048 位的 RSA 密鑰,鑰匙號 B3A4A822,創建於 2017-12-07 (主鑰匙號 F98FA558) can't connect to `/root/.gnupg/S.gpg-agent': 沒有那個文件或目錄 gpg: 由 2048 位的 RSA 密鑰加密,鑰匙號爲 B3A4A82二、生成於 2017-12-07 「lyzkk <lyzkk@qq.com>」
解密後的文件加密
7.刪除密鑰
刪除鑰匙前須要先刪除私鑰
[root@POC-ORACLE ~]# gpg --delete-key lyzkey gpg (GnuPG) 2.0.14; Copyright (C) 2009 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: 公鑰「lyzkey」有對應的私鑰! gpg: 請先使用「--delete-secret-keys」選項來刪除它。 [root@POC-ORACLE ~]# gpg --delete-secret-keys lyzkey gpg (GnuPG) 2.0.14; Copyright (C) 2009 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. sec 2048R/CCB014D0 2018-04-28 lyzkey <lyzkey@qq.com> 要從鑰匙環裏刪除這把密鑰嗎?(y/N)y 這是一把私鑰!――真的要刪除嗎?(y/N)y [root@POC-ORACLE ~]# gpg --delete-keys lyzkey gpg (GnuPG) 2.0.14; Copyright (C) 2009 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. pub 2048R/CCB014D0 2018-04-28 lyzkey <lyzkey@qq.com> 要從鑰匙環裏刪除這把密鑰嗎?(y/N)y
8.涉及命令
一、生成密鑰對:gpg --gen-key 爲用戶生成新密鑰對。需提供:密鑰類型(默認爲RSA/RSA);密鑰長度(以位爲單位,越長越強);過時時間(以防密鑰損壞);填:名稱、電子郵箱、標識密鑰全部者的註釋;密碼短語(必須提供,若是私鑰被盜,將沒法使用)。 二、列出公鑰:gpg --list-keys 列出所擁有的公鑰:他們本身的公鑰以及從與之通訊的其餘人那裏導入的任何公鑰。 三、導出公鑰:gpg –export –armor key-id -o file.key 將公鑰導出至文件,以便於其餘人使用。–armor選項以文本形式顯示輸出,而非二進制格式。key-id是電子郵箱地址或在–list-keys的pub行中列出的八位十六進制數。 四、導入公鑰:gpg –import file.key 從發送給您的密鑰文件中導入其餘人的公鑰 五、加密文件:gpg –encrypt –armor -r key-id file 用key-id的公鑰加密消息。若是未提供-r key-id,命令將提示收件人輸入。默認輸出文件爲file.asc. 六、解密文件:gpg –decrypt file
2、Windows系統下
1.安裝
https://www.gnupg.org/download/index.en.html
安裝對應密鑰管理軟件
2.新建密鑰對
輸入信息
3.導入公鑰
導入完成
公鑰導入成功
4.加密文件
點擊加密按鈕,選擇加密文件
選擇爲他人加密
加密成功
5.解密文件
用linux端私鑰解密
[root@POC-APP ~]# gpg --output codetemplates.xml --decrypt codetemplates.xml.gpg
解密成功
6.刪除密鑰
右鍵刪除便可