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

您需要一个密码来保护您的私钥。

aa69c472806bd07c9774eeec36c41fb4.png

输入两次密码

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

c8a392677479168a3fc6f3cb85e0e11a.png

公钥导出文件 可vi查看

[root@POC-APP ~]# ll lyzkk.asc

-rw-r--r--. 1 root root 1703 12月 7 18:29 lyzkk.asc

277ae541d1b684e2f36b391d324213df.png

4.导入公钥

将公钥发布,导入另一台服务器

[root@POC-ORACLE ~]# gpg --import lyzkk.asc

gpg: 密钥 F98FA558:公钥“lyzkk ”已导入

gpg: 合计被处理的数量:1

gpg: 已导入:1 (RSA: 1)

267666fda54f3342862cf035ece3d1f0.png

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

9a74c65ce029e81b16db4a7d7d743a97.png

上传到有对应私钥解密的服务器

9b2c119a6f4fa51b2e4260cee67991e4.png

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 ”

ecb33577f30a30b25f099976015cc9e1.png

解密后的文件

95224527597ba99c8c7f3d7b3b38e9af.png

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

90095a1889c27c61bba3a1cba3744b1f.png

安装对应密钥管理软件

a071c4ea8daad62e7e73b8db4085fea8.png

2.新建密钥对

64f367d95ece18ac442c041f7613657b.png

输入信息

b8c7527cbab9094f82ddd754f0854ced.png

8d3c29af4b2200d56c52ee24ffd4181a.png

68be13380b6930c526ab516d648c437d.png

590f7720ac8fb6e72813db8b83acdbb3.png

cffc9adc833332ec752cf01a579796e9.png

3.导入公钥

93b5918c7ba9af0cb79a530b58065d76.png

导入完成

dd848979ac9194005cc86b8d2de78d53.png

81dabee606190044decaefe10682e575.png

bfd2c9d70a4bae08facf70bdd2776326.png

公钥导入成功

92fea604db2b15d0544a928ccc271c4d.png

4.加密文件

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

4dc1d90d2dce61052c9a1870b099cb29.png

选择为他人加密

752a88e632e7f85785f110704addacc5.png

54e3b229cefcb122f38ce594dd7cb158.png

1e79366c850da61b853fae336589f252.png

加密成功

a7ee044a05f6ccdb7e3df93fc98a3d18.png

5.解密文件

用linux端私钥解密

560179f8243602693a734f41fd9e7ed3.png

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

解密成功

8e39438f80a6bdc68eab7c86718e7b00.png

6.删除密钥

右键删除即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值