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 <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.文件加密

给文件不加签,加密

[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

在这里插入图片描述
上传到有对应私钥解密的服务器在这里插入图片描述

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 <lyzkk@qq.com>”
2048 位的 RSA 密钥,钥匙号 B3A4A822,建立于 2017-12-07 (主钥匙号 F98FA558)

can't connect to `/root/.gnupg/S.gpg-agent': 没有那个文件或目录
gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 B3A4A822、生成于 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.涉及命令

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
https://download.csdn.net/download/qq_21271511/12434919
在这里插入图片描述
安装对应密钥管理软件
在这里插入图片描述

2.新建密钥对

在这里插入图片描述
输入信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.导入公钥

在这里插入图片描述
导入完成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
公钥导入成功
在这里插入图片描述

4.加密文件

点击加密按钮,选择加密文件
在这里插入图片描述
选择为他人加密
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加密成功
在这里插入图片描述

5.解密文件

用linux端私钥解密
在这里插入图片描述

[root@POC-APP ~]# gpg --output codetemplates.xml --decrypt codetemplates.xml.gpg

解密成功
在这里插入图片描述

6.删除密钥

右键删除即可

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐