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加密解密过程相关推荐

  1. nodejs java rsa_NodeJS加密解密及node-rsa加密解密用法详解

    要用nodejs开发接口,实现远程调用,如果裸奔太危险了,就在网上找了一下nodejs的加密,感觉node-rsa挺不错的,下面来总结一下简单的rsa加密解密用法 初始化环境 新建一个文件夹 node ...

  2. java公钥加密私钥解密_公钥加密,私钥解密示例程序(JAVA)详解

    公钥与私钥机制属于非对称加密的范畴,非对称是相对于对称加密而言的,对称加密用于加密与解密的密钥是同一把,而非对称加密则用于加密与解密的密钥不相同,一个公开,称为公钥:一个保密,称为私钥,公钥与私钥必须 ...

  3. java rsa 验_Java使用RSA加密解密签名及校验

    RSA加密解密类: package com.ihep; import java.io.BufferedReader; import java.io.BufferedWriter; import jav ...

  4. java android rsa加密解密_Android RSA加密解密

    转载 http://blog.csdn.net/bbld_/article/details/38777491 RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十 ...

  5. java rsa签名_Java使用RSA加密解密签名及校验

    由于项目要用到非对称加密解密签名校验什么的,于是参考<Java加密解密的艺术>写一个RSA进行加密解密签名及校验的Demo,代码很简单,特此分享! 一.项目截图 代码下载后,导入到ecli ...

  6. java rsa 117_java实现RSA非对称加密解密

    之前写过一篇java实现AES对称加密解密 在对密码加密传输的场景下 RSA非对称加密解密可能会更加适合. 原理就是后台生成一对公钥和私钥,公钥给前端用来加密,后台用私钥去解密,保证了传输过程中就算被 ...

  7. java dsa加密与解密_Java DSA 加密 | 解密

    Java DSA 加密 | 解密 什么是DSA ? DSA (Digital Signature Algorithm) 是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 ...

  8. 学习笔记:公钥私钥 签名验签 加密解密 CA 证书

    重点: 1.区分加密解密和签名验签(在非对称加密情景下) 加密解密:#A给B发消息# A用B的公钥进行运算(加密),B收到后用B自己的私钥进行逆向运算(解密) 签名验签:#A给B发消息# A用A自己的 ...

  9. java rsa 文件加密解密_RSA 加密、解密(自己生成加密解密文件)

    本文是自己阅读了网上的高人们的文章之后,实现功能后总结出来的,方便自己方便他人,不喜勿喷 加密解密需要生成公钥.私钥文件步骤 1.打开终端 输入 openssl 5F88AA4A-3913-4CBC- ...

最新文章

  1. python 加密和解密
  2. 程序猿小白应该注意什么
  3. Mercurial入门学习
  4. 【PHP】文件写入和读取详解
  5. PID控制器开发笔记之一:PID算法原理及基本实现
  6. APP搜索框的样式素材模板,可临摹的好素材
  7. 泰拉瑞亚试图加载不正确的_盘点那些著名的沙盒游戏?泰拉瑞亚堪称2D沙盒之王...
  8. 分享个手游剑侠情缘2挂机脚本,能够多开刷银两的工具
  9. mysql导出单表数据_MySQL之导出整个及单个表数据的操作
  10. 【毕业设计】QT从入门到实战:实现模仿QQ通讯,也是在校的最后一篇博文。
  11. 100流明相当于多少w_GE的50W卤素灯光通量标明1500流明实际有这么高吗换几W的LED灯较合适...
  12. 软文写作技巧与营销的相互作用
  13. 记一次高德地图引入 AMap is not defined 血坑
  14. 单片机——A/D数模转换篇
  15. ubuntu 12.04中搭建nfs服务器
  16. uni-app H5实现扫码登录功能
  17. chmod 777 什么意思:鸟哥的linux私房菜第六章学习笔记
  18. pytorch锁死在dataloader(训练时卡死)
  19. python人脸识别库_基于Python的face_recognition库实现人脸识别
  20. IaaS PaaS SaaS云服务三种应用模式

热门文章

  1. [luogu P2590 ZJOI2008] 树的统计 (树链剖分)
  2. ElasticSearch Java API
  3. Service-Oriented Architecture,SOA(转)
  4. 利用selenium webdriver点击alert提示框
  5. 说一下自己对于 Linux 哲学的理解
  6. (线段树 点更新 区间求和)lightoj1112
  7. Android--pendingIntent Intent
  8. 1837Balance
  9. Windows 8 C++/CX字符串
  10. STRUTS2 标签调用静态方法