GPG加密解密过程

   日期:2020-05-16     浏览:121    评论:0    
核心提示:GPG加密解密过程一、Linux系统下1.安装yum安装[root@POC-ORACLE ~]# yum install gnupg下载安装包安装https://www.gnupg.org/download/index.en.html查看gpg帮助[root@POC-ORACLE ~]# gpg --helpgpg (GnuPG) 2.0.14libgcrypt 1.4.5Copyright (C) 2009 Free Software Foundation, Inc.Licen数据库

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

安装对应密钥管理软件

2.新建密钥对


输入信息




3.导入公钥


导入完成



公钥导入成功

4.加密文件

点击加密按钮,选择加密文件

选择为他人加密



加密成功

5.解密文件

用linux端私钥解密

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

解密成功

6.删除密钥

右键删除即可

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服