java公钥加密私钥解密过程_GPG加密解密过程
GPG加密解密過程
一、Linux系統下
1.安裝
yum安裝
[root@POC-ORACLE ~]# yum install gnupg
下載安裝包安裝
https://www.gnupg.org/download/index.en.html
查看gpg幫助
[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
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 天后過期
w = 密鑰在 n 周后過期
m = 密鑰在 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) "
真實姓名:lyzkey
電子郵件地址:lyzkey@qq.com
注釋:
您選定了這個用戶標識:
“lyzkey ”
更改姓名(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
sub 2048R/4B7C31FC 2018-04-29
另一臺服務器上同樣創建密鑰
[root@POC-APP ~]# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/F98FA558 2017-12-07
uid lyzkk
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 ”已導入
gpg: 合計被處理的數量:1
gpg: 已導入:1 (RSA: 1)
5.文件加密
給文件不加簽,加密
[root@POC-ORACLE ~]# gpg --recipient lyzkk --output install.log.asc --encrypt install.log
gpg: B3A4A822:沒有證據表明這把密鑰真的屬于它所聲稱的持有者
pub 2048R/B3A4A822 2017-12-07 lyzkk
主鑰指紋: EE13 B668 8956 7766 EEF7 6DE2 67F5 B833 F98F A558
子鑰指紋: B6DA 032C 47B4 649E 1046 8CE4 FB2C 55EF B3A4 A822
這把密鑰并不一定屬于用戶標識聲稱的那個人。如果您真的知道自
己在做什么,您可以在下一個問題回答 yes。
無論如何還是使用這把密鑰嗎?(y/N)y
上傳到有對應私鑰解密的服務器
6.文件解密
[root@POC-APP ~]# gpg --decrypt install.log.asc --output install.log
用法:gpg [選項] --decrypt [文件名]
參數順序不能反
[root@POC-APP ~]# gpg --output install.log --decrypt install.log.asc
您需要輸入密碼,才能解開這個用戶的私鑰:“lyzkk ”
2048 位的 RSA 密鑰,鑰匙號 B3A4A822,建立于 2017-12-07 (主鑰匙號 F98FA558)
can't connect to `/root/.gnupg/S.gpg-agent': 沒有那個文件或目錄
gpg: 由 2048 位的 RSA 密鑰加密,鑰匙號為 B3A4A822、生成于 2017-12-07
“lyzkk ”
解密后的文件
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
要從鑰匙環里刪除這把密鑰嗎?(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
要從鑰匙環里刪除這把密鑰嗎?(y/N)y
8.涉及命令
1、生成密鑰對:gpg --gen-key
為用戶生成新密鑰對。需提供:密鑰類型(默認為RSA/RSA);密鑰長度(以位為單位,越長越強);過期時間(以防密鑰損壞);填:名稱、電子郵箱、標識密鑰所有者的注釋;密碼短語(必須提供,如果私鑰被盜,將無法使用)。
2、列出公鑰:gpg --list-keys
列出所擁有的公鑰:他們自己的公鑰以及從與之通信的其他人那里導入的任何公鑰。
3、導出公鑰:gpg –export –armor key-id -o file.key
將公鑰導出至文件,以便于其他人使用。–armor選項以文本形式顯示輸出,而非二進制格式。key-id是電子郵箱地址或在–list-keys的pub行中列出的八位十六進制數。
4、導入公鑰:gpg –import file.key
從發送給您的密鑰文件中導入其他人的公鑰
5、加密文件:gpg –encrypt –armor -r key-id file
用key-id的公鑰加密消息。如果未提供-r key-id,命令將提示收件人輸入。默認輸出文件為file.asc.
6、解密文件:gpg –decrypt file
二、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.刪除密鑰
右鍵刪除即可
總結
以上是生活随笔為你收集整理的java公钥加密私钥解密过程_GPG加密解密过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件需求说明书怎么写
- 下一篇: 三菱plc pwm指令_三菱PLC常用指