一、什么是GPG

  要了解什么是GPG,就要先了解PGP。

  1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。

  GPG有许多用途,本文主要介绍文件加密。本文的使用环境为Linux命令行。如果掌握了命令行,Windows 或 Mac OS 客户端,就非常容易掌握。

二、使用GPG

1.创建密钥

gpg --gen-key

  第一段是版权声明,然后让用户自己选择加密算法。默认选择第一个选项RSA,表示加密和签名都使用RSA算法,目前来说,RSA算法是安全性最强的。我们输入1,然后回车

  然后会让我们配置密钥的加密长度。RSA 密钥长度应在 1024 ~ 4096 位之间,默认是2048。密钥的长度越长,安全性越高,但是加密和解密的速度就越慢。在此我们使用默认配置2048。

  接下来设置密钥的有效期,默认值0代表永不过期。然后会让我们确认密钥的有效期,直接输入y继续。如果想设置在密钥2年后过期,那么应该输入2y,然后回车,其他类推。

  输入y确认之后,会要求我们输入个人信息来构造用户ID,按顺序为:真实姓名、Email地址、注释,其中注释可以为空。

  然后用户ID就生成好了,此时会向你确认信息是否需要修改:输入N修改姓名,C修改注释,E修改Email,O表示确认,Q退出。我输入字母O确认。

  然后需要设置一个密码来保护我们的私钥。这里输入密码的时候,不会在控制台上显示出来。

  然后我们的公、私钥就已经生成好并签名完成。

  公钥:pubring.gpg,私钥:secring.gpg。其中生成公钥的密钥ID是:7A701106,私钥的ID为:BBA3B083。其中密钥ID即为公钥ID,也可以作为用户ID,。这里有两处需要记住,第一就是设置的私钥密码,第二就是生成公钥的密钥ID。私钥密码是解密时需要的。密钥ID是对文件进行加密需要的。

  到此为止,我们已经完成了生成公钥和私钥的任务了。这时,最好再生成一张"撤销证书",以备以后密钥作废时,可以请求外部的公钥服务器撤销我们的公钥。

  然后会让我们设置吊销原因,输入描述(可选);以空白行结束:

     = 未指定原因
= 密钥已泄漏
= 密钥被替换
= 密钥不再使用
Q = 取消

这里需要输入我们设置的私钥保护密码,才能解开私钥

上面一段的翻译,就是说让我们保护好这个证书文件。,翻译过来大概是这个意思

请把这个文件转移到一个可隐藏起来的介质(如软盘)上;如果坏人能够取得这
份证书的话,那么他就能让您的密钥无法继续使用。把这份凭证打印出来再藏
到安全的地方也是很好的方法,以免您的保存媒体损毁而无法读取。但是千万
小心:您的机器上的打印系统可能会在打印过程中把这些数据临时在某个其他人也能够看得到的地方!

2.密钥管理

(1)参数列出系统中已有的密钥

gpg -k 或者 gpg --list-keys           //列举公钥
gpg -K 或者 gpg --list-secret-keys   //列举私钥

(第一行是公钥文件路径,第二行是公钥信息,第三行是用户ID,第四行是私钥信息。)

(2)删除密钥

gpg --delete-key [用户ID]         # 删除公钥
gpg --delete-secret-keys [用户ID]    # 删除私钥

(3)导出密钥

  公钥和私钥(gpg文件)都是以二进制形式存储,使用--armor参数可以导出为ASCII码形式。

  导出公钥文件

gpg --armor  --export [用户ID] --output public-key.txt

  导出私钥文件

gpg --armor  --export-secret-keys --output private-key.txt

3.加密解密

(1)公钥加密

假定有一个压缩文件test.zip,我们对它进行加密。

  gpg --recipient [用户ID] --output test.zip.gpg --encrypt test.zip

encrypt参数表示对文件进行加密,encrypt参数指定源文件。recipient参数指定接收者的公钥,output参数指定加密后的文件名,

运行上面的命令后,test.zip.gpg就是已加密的文件。

(2)私钥解密

对方收到加密文件以后,就用自己的私钥解密。

  gpg --output test2.zip --decrypt test.zip.gpg 

output参数指定解密后生成的文件。decrypt参数指定需要解密的文件。解密文件保存为test2.zip。

参考

https://www.jianshu.com/p/268064e67719

https://www.jianshu.com/p/1257dbf3ed8e

GPG的更多相关文章

  1. GPG终极指南(加密/签名)

    我们平时都听过非对称加密,公钥和私钥,签名验证,但这些证书都是怎么得到的呢?本篇文章会解答这些问题. 背景介绍 加密的一个简单但又实用的任务就是发送加密电子邮件.多年来,为电子邮件进行加密的标准一直是 ...

  2. 使用 gpg 加密文件 - 通过 shell 或 php

    使用 gpg 加密文件 - 通过 shell 或 php 背景:客户提供私钥,并要求我方通过php把加密后的文件传输给他们. 环境 macOS Sierra 10.12.1 php 7.0.8 0.安 ...

  3. Ubuntu 更新源失败[GPG error]

    对于错误 GPG error: http://ppa.launchpad.net precise Release: The following signatures couldn't be verif ...

  4. Ubuntu W: GPG error: http://archive.ubuntukey....NO_PUBKEY 8D5A09

    在用 sudo apt-get update 时出现这样的报错: W: GPG error: http://archive.ubuntukylin.com:10006/ubuntukylin xeni ...

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

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

  6. 使用 GPG 对数据进行加密解密签名

    一:使用 GPG 对数据进行加密解密签名 基本的工具使用 1. GPG 是GNUPG 免费开源的gpg加密工具,和同pgp兼容,pgp收费. 2. 在mac上使用https://gpgtools.or ...

  7. 我的qq邮箱的GPG公钥

    呵呵,赶一波潮流,我的邮箱 175420840@qq.com 的GPG公钥如下,也可以在这里直接下载.具体可参见阮一峰的<GPG入门教程>. -----BEGIN PGP PUBLIC K ...

  8. gpg的一些常用操作

    (1)列出keys # gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub   2048R/98681A63 2 ...

  9. Maven 简单配置gpg

    1. 下载maven到指定目录,指定对应的gpg的执行命令所需要的属性.这里比如下载解压后的maven目录是: C:\maven-apache-3.3.2 ,那么配置文件目录是: C:\maven-a ...

  10. [git]使用GPG签名你的commit

    概述 GPG是一种加密算法,现在github支持commit使用GPG加密,从而保证提交的commit在传输的过程中没有被篡改. 一.生成GPG密钥 什么是GPG:阮一峰的GPG教程 安装GPG:br ...

随机推荐

  1. VMware6.0-vCenter的安装准备及安装

    由于6.0的VCSA安装需要跳板主机来辅助,而在5.5时时可用用OVA导入模式安装的. 首先安装跳板插件 安装完成后,点击setup链接. 设置 Single Sign-On (SSO),将root和 ...

  2. 2017-9-12-Linux移植&驱动开发

    准备学习Linux很长时间了,很大的一个原因就是兴趣,Linux对科技进步发展.人们生活的改变影响之深很难用简简单单的一些话描述清楚.跟Linux密切相关的东西,开源软件.c语言.底层驱动.网络.服务 ...

  3. Java 8 (二) 新的时间API

    新的时间API 一)时间线 Instant对象:表示时间轴上的一个点,原点为1970-1-1的午夜. Duration对象:表示一段时间. 注意Instant和Duration类都是final. 二) ...

  4. 潭州课堂25班:Ph201805201 django 项目 第二课 git 版本控制 (课堂笔记)

    安装 git sudo apt-get install git 查看版本信息: git --version 演示: 创建个项目 创建文件夹 如果要对这个文件夹进行版本控制 先进到这个文件夹中, 命令查 ...

  5. 工程管理之makefile与自动创建makefile文件过程

    (风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的 ...

  6. 教你用Windows自带工具给优盘/移动硬盘添加密码

    教你用Windows自带工具给优盘/移动硬盘添加密码 本文中优盘,移动硬盘和分区操作方式一样,为方便描述,下文将只说优盘 优盘成了很多人每天都会用到的工具,有时候自己优盘会存着一些不希望别人看到的文件 ...

  7. 20172310 实验四 Android程序设计

    20172310 2017-2018-2 <程序设计与数据结构>实验四报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 仇夏 学号:20172310 实验教师:王志 ...

  8. Ajax实现局部数据交互的一个简单实例

    想要实现的功能:利用Ajax技术通过点击一个<button>按钮,然后在指定的文本框中输出想要的值. 1.使用Jsp创建一个前端页面. <body> <div style ...

  9. ISDN简记

    简介 ISDN:(Integrated Services Digital Network,综合业务数字网) 是以综合数字电话网(IDN)为基础发展演变而形成的通信网,能够提供端到端的数字连接,用来支持 ...

  10. python之编程风格

    第一:语句和语法 #   表示注释掉的内容 \    续行 print("yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\ yyyyyyyyyyyyyyyyyyyyy ...