热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GPG非对称加密

非对称加密解密文件时,发送方(UserA)以接收方(UserB)的公钥加密文件,接收方以自己的私

非对称加密/解密文件时,发送方(UserA)以接收方(UserB)的公钥加密文件,接收方以自己的私钥解密
1.接收方UserB创建自己的公钥、私钥对,执行gpg --gen-key操作,根据提示选择并创建密钥:
2.[UserB@pc207 ~]$ gpg --gen-key
1.请选择您要使用的密钥种类:
2.(1) RSA and RSA (default)
3.(2) DSA and Elgamal
4.(3) DSA (仅用于签名)
5.(4) RSA (仅用于签名)
6.您的选择? //直接回车默认(1)
7.RSA 密钥长度应在 1024 位与 4096 位之间。
8.您想要用多大的密钥尺寸?(2048) //接受默认2048位
9.您所要求的密钥尺寸是 2048 位
10.请设定这把密钥的有效期限。
11.0 = 密钥永不过期
12. = 密钥在 n 天后过期
13.w = 密钥在 n 周后过期
14.m = 密钥在 n 月后过期
15.y = 密钥在 n 年后过期
16.密钥的有效期限是?(0) //接受默认永不过期
17.密钥永远不会过期
18.以上正确吗?(y/n)y //输入y确
2.接收方UserB导出自己的公钥文件;用户的公钥、私钥信息分别保存在pubring.gpg和secring.gpg文件内

[UserB@pc207 ~]$ gpg --list-keys //查看公钥环
/home/UserB/.gnupg/pubring.gpg
[UserB@pc207 ~]$ gpg --list-secret-keys
/home/UserB/.gnupg/secring.gpg //查看私钥环

使用gpg命令结合–import选项将其中的公钥文本导出,传给发送方UserA:

[UserB@pc207 ~]$ gpg -a --export UserB > /tmp/UserB.pub
[UserB@pc207 ~]$ ftp 192.168.4.7
Name (192.168.4.7:UserB): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> lcd /tmp/
Local directory now /tmp
ftp> put UserB.pub //通过FTP将公钥传给发送方主机
local: UserB.pub remote: UserB.pub
227 Entering Passive Mode (192,168,4,6,59,39).
150 Ok to send data.
226 Transfer complete.
1719 bytes sent in 0.000127 secs (13535.43 Kbytes/sec)
ftp> quit
221 Goodbye.

3.发送方UserA导入接收方的公钥信息
使用gpg命令结合–import选项导入发送方的公钥信息,以便在加密文件时指定接收人来调用对应的公钥。

[UserA@svr7 ~]$ gpg --import /var/ftp/pub/UserB.pub
[UserA@svr7 ~]$ echo "I love you ." > tosend.txt
[UserA@svr7 ~]$ gpg -e -r UserB tosend.txt
[UserA@svr7 ~]$ exit
logout
[root@svr7 ~]# cp /home/UserA/tosend.txt.gpg /var/ftp/tosend.txt.gpg

4.接收方UserB收取加密文件,以自己的私钥解密文件

[UserB@pc207 ~]$ wget ftp://192.168.4.7/tosend.txt.gpg
[UserB@pc207 ~]$ gpg -d tosend.txt.gpg > tosend.txt
[UserB@pc207 ~]$ cat tosend.txt //获得解密后的文件内容
I love you .
***************************************

7.使用GPG实现软件包的完整性校验,检查软件包签名
1.在pc207上,作者UserB为软件包创建分离式签名,将软件包、签名文件、公钥文件一起发布给其他用户下载,。

[UserB@pc207 ~]$ tar zcf tools-1.2.3.tar.gz /etc/hosts //建立测试软件包
[UserB@pc207 ~]$ gpg -b tools-1.2.3.tar.gz //创建分离式数字签名
[UserB@pc207 ~]$ ls -lh tools-1.2.3.tar.gz* UserB.pub
-rw-rw-r--. 1 UserB UserB 170 817 21:18 tools-1.2.3.tar.gz
-rw-rw-r--. 1 UserB UserB 287 817 21:22 tools-1.2.3.tar.gz.sig
-rw-rw-r--. 1 UserB UserB 1.7K 817 21:26 UserB.pub
[root@pc207 ~]# yum -y install vsftpd
[root@pc207 ~]# cp /home/UserB/tools-1.2.3.tar.gz* /var/ftp/
[root@pc207 ~]# cp /home/UserB/UserB.pub /var/ftp/
[root@pc207 ~]# service vsftpd start

2.在svr7上,下载软件包并验证官方签名。下载主机pc207发布的UserB的软件包、签名、公钥,导入UserB的公钥后即可验证软件包的完整性。

[root@svr7 ~]# wget ftp://192.168.4.207/tools-1.2.3*
[root@svr7 ~]# wget ftp://192.168.4.207/UserB.pub
[root@svr7 ~]# gpg --import UserB.pub //导入作者的公钥信息
[root@svr7 ~]# gpg --verify tools-1.2.3.tar.gz.sig tools-1.2.3.tar.gz


推荐阅读
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
author-avatar
Irises---_372
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有