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.删除密钥

右键删除即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十分钟让你明白Objective-C的语法(和Java、C++的对比)

2019独角兽企业重金招聘Python工程师标准>>> 很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C有着很大的区别,有的同学会感觉…

I2C子系统详解1——I2C总线设备的驱动框架

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 I2C总线驱动框架详解 linux内核I2C子系统详解 一、I2C总线的物理特征 这部分内容的简介可见博客:SPI、I2C、UART(即串口)三种串行总线详解。 &#x…

神经网络编程入门

本文主要内容包括: (1) 介绍神经网络基本原理, (2) AForge.NET实现前向神经网络的方法, (3) Matlab实现前向神经网络的方法 。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en.wikipedia.or…

软考复习之路—组成原理

计算机系统的基础知识应该是作为一个编程人员必备的一门课程,仅仅有了解了计算机的组成,程序在计算 机中的存储状态,运算等基本内容,我们才干继续对计算机有更深层次的认识,更easy学习与上手。比方说要 想学习操作系统…

python内存管理机制错误_Python内存管理机制和垃圾回收机制的简单理解

一、内存管理机制1.由c开发出来的cpython2.include / objests3.需要下载python源码包4.Pyobject:floatPyVarObject:5.在python中所有东西创建对象的时候,内部都会存储一个数据// 维护双向链表struct _object *_ob_next;struct _object *_ob_p…

求背包问题所有解(C++实现)

这是我学习数据结构时的一道上机作业&#xff0c;那时还没养成写注释的习惯&#xff0c;所以各位得受点苦了。 只是简易背包问题。 代码&#xff1a; 展开 1 // 背包问题所有解2 // 作者:王锦 3 // 邮箱:jinkswvip.qq.com4 5 #include "stdafx.h"6 #include <iost…

JAVA--自制斐波那契数列输出

累了&#xff0c;写点简单的。 1 public class hello {2 3 /**4 * param args5 */6 public static void main(String[] args) {7 int Fabnum 10;8 int sum 0;9 System.out.print("Serial:\t"); 10 for(int i 1…

9、C语言 —— 指针的用处

为什么80%的码农都做不了架构师&#xff1f;>>> 1、用函数实现两个数的交换 ‍‍在没用函数之前&#xff0c;可以这样实现‍‍#include <stdio.h>int main() {int a 3;int b 7;int c;printf("交换前&#xff0c;a%d&#xff0c;b%d\n", a, b); …

java动态代理二cglib

2019独角兽企业重金招聘Python工程师标准>>> java动态代理 转载于:https://my.oschina.net/u/1430510/blog/290215

中断的上下半部

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 因为输入类设备的输入都是异步事件&#xff0c;因此一般使用中断来处理和响应。 中断处理程序处于中断上下文中&#xff0c;不能和用户空间数据交互&#xff08;不能使用copy_to(from)_usr函数…

图片播放器小项目(详解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。一、开始动手写代码 1、Makefile介绍 &#xff08;1&#xff09;这是一个通用的项目管理的Makefile体系&#xff0c;自己写的&#xff08;有子文件夹组织的&#xff09;项目可以…

Telnet远程访问思科交换机、路由器

一、实验目的Telnet远程访问思科交换机、路由器二、实验拓扑三、实验步骤1、PC1远程管理S11&#xff09;配置交换机的管理IPS1(config)#int vlan 1S1(config-if)#ip add 192.168.1.100 255.255.255.0S1(config-if)#no shu2&#xff09;开启S1的telnet远程管理服务S1(config)#li…

[置顶]       cocos2d-x 手游源码站

尊重开发者的劳动成果&#xff0c;转载的时候请务必注明出处&#xff1a;http://blog.csdn.net/haomengzhu/article/details/37829061 1、魔幻方块 链接&#xff1a;魔幻方块源码关键词&#xff1a;魔幻方块源码 源代码 Cocos2d-x2.0 游戏源码 益智 休闲 游戏 游戏类型&#xf…

Android SDK开发包国内下载地址

原帖地址&#xff1a;http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2769409.html 不知道是因为最近kaihui还是怎么的&#xff0c;打开android sdk官方网站特别的慢&#xff0c;想下载最新版本的platform几乎变成不可能完成的任务&#xff0c;不知道为什么Google不像…

SharePoint 2013 Workflow - Advanced Workflow Debugging with Fiddler

来自&#xff1a;Andrew Connell [MVP SharePoint] | 时间&#xff1a;2012-07-18 19:26:30 原文链接&#xff1a; http://www.andrewconnell.com/blog/archive/2012/07/18/sharepoint-2013-workflow-advanced-workflow-debugging-with-fiddler.aspx In previous posts Iv…

java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...

如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)问题描述 (Problem Description)如何使用Java设置电子表格的打印区域。解决方案 (Solution)以下是使用Java设置电子表格打印区域的程序。import java.io.File;import java.io.Fi…

RedHat6.2 x86手动配置LNMP环境

为什么80%的码农都做不了架构师&#xff1f;>>> 因为公司要求用RedHat配&#xff0c;顺便让我练习一下Linux里面的操作什么的。 折腾来折腾去终于搞好了&#xff0c;其实也没那么难嘛。但是也要记录一下。 首先&#xff0c;是在服务器里面用VMware搭建的RedHat6.2 …

《c语言深度剖析》读书笔记

一、注意点 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 二、问题 1、 2、 3、 4、 5、 6、 7、

androidpn的一次亲密接触(二)

简单看了一下源码的实现&#xff0c;这里贴一点个人觉得比叫重要的代码。 XmppManager.java 构造方法&#xff1a;Java代码public XmppManager(NotificationService notificationService) 在这里主要是从共享引用中取得xmpp服务器地址和端口号、用户名和密码。 内部类Java代码…

指针知识学习[总]

printf("p %p.\n", p); // %p打印指针和%x打印指针&#xff0c;打印出的值是一样的 printf("p 0x%x.\n", p); 一、指针是什么&#xff1f; 1、指针变量和普通变量的区别 指针的实质就是个变量&#xff0c;它跟普通变量没有任何本质区别。指针完整的名字…