GnuPG(GNU Privacy Guard,简称:GPG)为一款免费开源的使用非对称密钥加密(asymmetric cryptography)之软件,最初由Werner Koch开发,该软件使用非对称密钥(亦称公开密钥加密)提高加密速度,使用公钥便于交换。 GnuPG是自由软件基金会的GNU计划的一部份,与2000年开始接受德国政府资助。以GNU通用公共许可证第三版授权。

本次实验是用自己的笔记本做的。

小组成员:20155309 南皓芯 20155220 吴思其

加解密

加密过程需要双方均安装GnuPG,大致过程为A在本地生成公钥和私钥,将公钥上传到公钥服务器或者直接发送给B,B接受到公钥后对文件进行加密(加密后B无法解密)并将加密文件发送给A,A使用私钥解密,从而避免直接传送密码。

首先我们要在官网上下载GPG,在官网中找到下载一项,并且鼠标下移,在windows中找到gpg4win并且下载。

下载并安装的时候,按照系统提示的命令就好,但是注意到这个程序不要存在c盘中,所以我选择存放到了d盘。最后finish安装即可,最好将其存放在桌面上,打开之后会出现这样的界面。

密钥对生成

首先在运行界面,点击文件,并且选择new key pair 然后出现如下的界面。

然后选择第一项。然后填好自己的姓名,邮箱以及备注。

之后,进行更详尽的配置,选取rsa,默认为2048字节,为了安全起见,设置好有效期。

显示出所有参数之后,点击create key继续。之后输入密码。

再次输入密码之后选择ok

密钥对创建完毕后,点击第一个选项进行备份。

然后确定保存的位置,之后会有信息确保成功导出。

回到主界面可以看到已经生成的密钥对。

选中密钥对,并且点击鼠标右键,选择export certificate
将密钥对保存至主机文件(asc文件)

系统会提示你已经成功。

用记事本打开这个文件,该文件就是公钥。

我们也可以将密钥上传到公共或私有服务器上,点击鼠标右键,并且选择 export certificate to server

点击continue继续之后,即可发现已经成功。

加密文件

告知对方您公钥的名称及存储公钥服务器,对方打开Kleopatra,点击“Lookup Certificates on Server”。

在主界面依次点击“Settings-->Configure Kleopatra”。

在下图中点击“New”

默认将增加“keys.gnupg.net”服务器,点击“OK”返回主界面。

重新点击“Lookup Certificates on Server”,输入公钥名称(nhx20155309)并点击“Search”。

提示已经导入成功

在主界面选择“File”并点击“Sign/Encrypt Files...”(亦可直接拖动需要加密之文件到“My Certificates”栏)。
选取你所要加密的文件(在这里也就是秘密文件)


如需加密完毕后直接删除原文件则选择“Remove unencrypted original file when done”,点击“Next>”继续。

.选择已生成之密钥并点击“Add”按钮后将密钥添加,然后点击“Encrypt”。

加密完毕,提示原文件已被删除。

在原目录里可发现原文件已被删除,新增一个文件名为“原文件名.gpg”的文件,对方将此文件发送给我们即可。

解密文件

收到对方发送的加密文件后,在加密文件(本例中为jiaoxue.db.gpg)点击鼠标右键,选择“Decrypt and verify”。 亦可在Kleopatra主界面依次点击“File-->Decrypt/Verify Files...”,找到对方发送的加密文件打开。


直接选取decrypt即可

在加密文件同路径下可看到解密文件,在桌面查看即可。

实验中遇到的问题

在我们下载pgp软件的时候,注意不要下载最新版3.0.0的软件,要下载2.2.2的老版软件,在下载新版软件的时候,在输入rsa的comment的时候,新版的没有这一选项,导致rsa的加解密不能够正确进行。

思考题

根据pgp的加密原理,说明为什么pgp要比RSA加密速度要快得多?

PGP不是加密方法,是一个软件,使用过程中会涉及到很多加密方法,如DES,3DES,RSA,AES等等。
RSA是公钥加密,计算过程涉及到很大的幂指数运算,所以非常慢,一般不用于直接加密明文,通常用于交换密钥。

学习与感悟

首先,通过自行下载pgp以及亲手一步一步进行加解密,自己完全的理解了pgp加解密的原理。在亲手操作的过程中,自己遇到了很多的问题,但是都通过网络与书籍自行解决了。让我了解了做事情不要慌张,只要沉着冷静的思考问题,最后一定会得到自己想要的结果。

PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。PGP采用的传统加密技术部分所使用的密钥称为“会话密钥”(sek)。每次使用时,PGP都随机产生一个128位的IDEA会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。(参考百度文库)

关于利用GPG加解密的实验的更多相关文章

  1. 烂泥:gpg加解密软件学习

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真 ...

  2. gpg加解密异常

    在本地windows电脑和开发环境(linux) ,都不报错,但是在测试环境(linux) 上报错. 报错信息 org.bouncycastle.openpgp.PGPException: Excep ...

  3. web.config/app.config敏感数据加/解密的二种方法

    一 建立虚拟目录  http://localhost/EncryptWebConfig,并添加web.config,其中包含数据库连接字符串: <connectionStrings>    ...

  4. Java实验五报告——TCP传输及加解密

    一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者D ...

  5. 实验五 TCP传输及加解密

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计                         班级:1353            姓名:陈巧然     ...

  6. 实验五 cmp传输与加解密

    ---恢复内容开始--- (一)实验内容 1.运行TCP代码,一人服务器,一人客户端 2.下载加解密代码,先编译运行代码,一人加密一人解密. 3.集成代码,一人加密后通过TCP 发送,加密使用DES或 ...

  7. php利用自定义key,对数据加解密的方法

    客户端和服务端通信时,有个场景很常见,通过一个id作为url参数来回传递.假设现在业务上只有这个id标识,那么需要稍微安全一点的通信,对这个id进行加密传输,到服务端再进行解密.这里需要一个服务端进行 ...

  8. PHP 7中利用OpenSSL代替Mcrypt加解密的方法详解

    php7.1发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利.但是从php7.0 升级到 php7.1 废弃(过时)了一个在过去普遍应用的扩展(mcrypt扩展).官方提供了相应的 ...

  9. C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密

    C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩   这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http:// ...

随机推荐

  1. python中的模块及路径(2)

    如果我们要添加自己的搜索目录,有两种方法: 一是直接修改sys.path,添加要搜索的目录: >>> import sys >>> sys.path.append( ...

  2. in的对象选择(子查询还是List集合),in 的优化,in与exists

    近日查看SQL慢查询日志,发现对于in的查询总是出现超时问题.超时相关SQL语句:select * from flow_ru_bizvar where businessId IN () and sta ...

  3. Vue.js学习笔记(一)

    其它前端主流框架可以做的事,Vue.js几乎都可以做, nuxt框架:可以实现vue的服务器端渲染, weex:使用vue语法编写原生app. 基础内容 基础语法 MVVM设计模式 前端组件化 vue ...

  4. 应用jfinal发送微信模板消息的一个bug

    严格来讲,这不是一个bug,只是我们应用的方式不对.微信发送模板消息的方法是: HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessTokenStr ...

  5. CF&&CC百套计划2 CodeChef December Challenge 2017 Total Diamonds

    https://www.codechef.com/DEC17/problems/VK18 #include<cstdio> #include<iostream> #includ ...

  6. jmeter上传图片附件-小插曲

    背景 最近,接到新项目的接口测试,发现该接口是需要上传图片,开始折腾了好久没有搞定,最后才发现st和sid,并不是作为请求实体,而是url的一部分,好吧,是我没有仔细 请求参数 { "con ...

  7. 为什么我要用 Node.js? 案例逐一介绍

    介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScript ,从前端跨越到后端, ...

  8. 使用JavaScript 修改浏览器 URL 地址栏

    现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不 ...

  9. 谁说码农不懂浪漫?js写的'老婆生日快乐'特效

    一直被老婆抱怨不懂浪漫,老婆的生日又来了,老婆指着闺蜜空间上贴的老公做的胡萝卜心形浪漫晚餐告诉我:必须送她一份用心的礼物.我绞尽脑汁想出这么一法子,还是得用我们码农的独特方式,经过一天多的努力,终于做 ...

  10. TI的H264 SOC方案

    TI的H264 SOC方案是目前常用的视讯解决方案,TI针对视频会议,视频监控,视频存储等场景细化需求并优化了H264技术. 1. TI H.264背景 如今视频压缩技术在视频领域有非常多的应用需求. ...