烂泥:gpg加解密软件学习
本文由ilanniweb提供友情赞助,首发于烂泥行天下
想要获得更多的文章,可以关注我的微信ilanniweb。
为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真正的密码。
为了不让其他人看到真正的邮箱密码,我们需要对其进行加密。
加密的方式是先把密码先写到一个文件A中,然后使用相关的加密软件对该文件A进行加密生成新的文件B。此时再删除文件A。
其他程序调用邮箱密码时,只调用加密后的文件B,同时对文件B进行解密。
加密我们使用的是gpg这个工具,下面我们来介绍下gpgp。
一、gpg是什么
GPG是GNU Privacy Guard或GnuPG的简称,它是一种用于加密、数字签章及产生非对称匙对的加密软件。
GPG使用非对称加密算法,安全程度比较高。所谓非对称加密算法,就是每一个用户都拥有一对密钥:公钥和私钥。其中,私钥由用户保存,公钥则由用户尽可能地分发给其他人,以便其他人与用户进行通信。
二、安装gpg
gpg的安装非常简单,在此我们以ubuntu 14.04 server为例。如下:
sudo apt-get -y install gnupg gnupg-agent rng-tools

centos6默认已经安装gpg,还需要我们在安装rng-tools就可以正常使用。如下:
yum -y install rng-tools
gpg安装完毕后,我们可以使用gpg --help命令查看gpg的使用方法。如下:
gpg --help

通过上图,我们可以看到gpg有很多选项。在此我们就不一一介绍了,下面文章中会介绍几个比较常用的命令。
三、创建gpg密钥对
在第一章,我们已经介绍了gpg使用非对称加密算法。非对称加密算法需要一对密钥对:一个公钥、一个私钥。
现在我们就来创建这对密钥,使用gpg --gen-key命令。如下:
gpg --gen-key

上面这张图中,我们一定要选择第一项,因为只有第一项用于加密,其他几项都是用于签名。

上面这张图中,我们根据实际情况进行选择密钥的有效期限。在此默认使用永久生效,永不过期。

上面这张图中,是配置密钥的加密长度。默认是2048bit,密钥的长度越长,加密的速度越慢。在此我们使用的是,默认配置。

这个填写该密钥的相关用户信息。

上图中,有两个地方需要记住。第一就是设置的私钥密码,第二就是生成密钥的密钥ID。
私钥密码是解密时需要的。密钥ID是对文件进行加密需要的。
四、加密文件
密钥对创建完毕后,我们现在来使用该密钥对一个文件A进行加密。
4.1 创建文件filea
首先创建文件filea,内容为ilannipassword。如下:
vi filea
ilannipassword

4.2 加密文件filea
文件filea创建完毕后,现在我们来使用gpg加密文件filea。使用gpg –e命令。如下:
gpg -e -r ilanni filea
这条命令的意思是,使用ilanni这个用户的密钥对文件filea进行加密。

通过上图,我们可以很明显的看出gpg已经把文件filea加密成新的文件filea.gpg。
现在我们来查看下加密后的文件filea.gpg,如下:
cat filea.gpg

通过上图,我们可以很明显的看出filea.gpg文件就是一堆乱码。这样就达到了加密的效果。
五、解密文件
文件filea被加密后形成新的文件filea.gpg,如果我们要知道加密前文件filea的内容的话,那么就需要我们来解密filea.gpg文件。
要解密gpg加密后的文件,我们需要使用ilanni这个用户的公钥和私钥。
在此我们是在ilanni这个用户密钥生成的机器A上进行解密的。如果在其他的机器B上来解密filea.gpg文件,那么就需要在B机器上把ilanni这个用户的私钥和公钥都导入进来。否则无法完成filea.gpg文件的解密。
解密filea.gpg,只需要使用gpg –d命令就行了。但是考虑到我们程序不需要人工进行交互,所以我们使用了如下的命令。
gpg --no-use-agent --passphrase=ilanni -q --no-tty -d filea.gpg

通过上图,我们可以很明显的看到filea.gpg文件已经被成功解密。
六、gpg参数介绍
gpg的参数比较多,下面就稍微介绍下,经常使用到的几个参数。
--gen-key:生成一副新的密钥对
--fingerprint:显示指纹
--send-keys:把密钥导出到某个公钥服务器上
--recv-keys:从公钥服务器上导入密钥
-a, --armor:输出经ASCII封装
-r, --recipient USER-ID:为收件者“某某”加密
-e, --encrypt:加密数据
-d, --decrypt:解密数据
-o, --output FILE:指定输出文件
--list-keys:显示所有公钥
--list-secret-key:显示所有私钥
--delete-keys:删除公钥
--delete-secret-keys:删除私钥
--delete-secret-and-public-keys:删除公钥和私钥
--import:导入公钥和私钥
--no-use-agent:不使用用户代理
--passphrase:私钥密码
--no-tty:在执行gpg时终端不显示信息
--quiet:使用安静模式
七、gpg的其他使用方法
下面列举下gpg常用参数的使用案例,如下。
7.1 gpg 查看所有公钥
gpg --list-key

7.2 gpg 查看所有私钥
gpg --list-secret-key

7.3 gpg删除密钥
gpg --delete-secret-keys 01BA7978 先删除私钥
gpg --delete-keys 73391FB6 再删除公钥

也可以使用一条命令全部删除,如下:
gpg --delete-secret-and-public-keys BFA7FF09

7.4 gpg导出公钥
gpg -a -o duanzhanling.asc --export BFA7FF09

7.5 gpg导出私钥
gpg -a -o duanzhanling-sec.asc --export-secret-key 0B7F4055

7.6 gpg导入密钥
导入私钥和公钥都用下面的命令gpg --import
gpg --import duanzhanling.asc 导入公钥

gpg --import duanzhanling-sec.asc 导入私钥

烂泥:gpg加解密软件学习的更多相关文章
- 关于利用GPG加解密的实验
GnuPG(GNU Privacy Guard,简称:GPG)为一款免费开源的使用非对称密钥加密(asymmetric cryptography)之软件,最初由Werner Koch开发,该软件使用非 ...
- gpg加解密异常
在本地windows电脑和开发环境(linux) ,都不报错,但是在测试环境(linux) 上报错. 报错信息 org.bouncycastle.openpgp.PGPException: Excep ...
- GPG(pgp)加解密中文完整教程
一.介绍 我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web.Email等一般都只提供明文传输方式(用https.smtps等例外).所以,当我们需要传输重要文件时,应该对当中的信息加密 ...
- Crypto++入门学习笔记(DES、AES、RSA、SHA-256)(加解密)
转自http://www.cppblog.com/ArthasLee/archive/2010/12/01/135186.html 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后 ...
- ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入、和使用、.js文件传输加解密
JSPatch ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入.和使用..js文件传输加解密 ios开发面临审核周期长,修复bug延迟等让人无奈的问题,所以 ...
- 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密
学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA AES RSA AES 混合加密 整合 前言: 为了提高安全性采用了RS ...
- shiro框架学习-6-Shiro内置的Filter过滤器及数据加解密
1. shiro的核心过滤器定义在枚举类DefaultFilter 中,一共有11个 ,配置哪个路径对应哪个拦截器进行处理 // // Source code recreated from a .c ...
- 学习Java AES加解密字符串和文件方法,然后写个简单工具类
Reference Core Java Volume Ⅱ 10th Edition 1 对称加密 "Java密码扩展"包含了一个Cipher,它是所有密码算法的超类.通过getIn ...
- 2.Java 加解密技术系列之 MD5
Java 加解密技术系列之 MD5 序 背景 正文 结束语 序 上一篇文章中,介绍了最基础的编码方式 — — BASE64,也简单的提了一下编码的原理.这篇文章继续加解密的系列,当然也是介绍比较基础的 ...
随机推荐
- 低信噪比的HTML5优化
百度搜索引擎建议是我们的HTML文件最好不要超过128KB,其实现在对于那些大文件搜索引擎也是很容易就抓取到的,只不过我们是尽量在可能的情况下把我们的网页代码越精简越好,我们要知道搜索引擎抓取网页的时 ...
- python验证登录
一个web2.0时代的网站,自然少不了用户注册,登录,验证的功能,那么python可以怎样实现登录验证呢 这里我们使用装饰器来做登录验证 网站构成 假设我们有这样一个网站,是一个类似与博客园这种多个用 ...
- Java final数据
许多程序设计语言都有自己的办法告诉编译器某个数据是"常数".常数主要应用于下述两个方面: 1)编译期常数,它永远不会改变: 2)在运行期间初始化的一个值,我们不希望它发生变化.ss ...
- Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景
Seen.js 渲染3D场景为 SVG 或者 HTML5 画布.Seen.js 包含对于 SVG 和 HTML5 Canvas 元素的图形功能的最简单的抽象.所有这个库的其它组件都是不用关心将要渲染的 ...
- 【服务器】CentOS下部署运行NodeJs Web App
NodeJs Web App测试完成后,要怎么部署呢?介绍两个不错的方案 已知以下情景: 我要为 「kenniu」这个项目做配置 它的入口文件在 「/path/to/entry.js」 运行的User ...
- SQL SERVER代码生成器必备
写代码生成器的时候经常用到的SQL 1.表添加注释 EXECUTE sp_addextendedproperty N'MS_Description', N'表注释', N'user', N'dbo', ...
- CSS学习总结(三)
一.属性选择符 如下表所示: 例子如下: <head> <meta charset="utf-8"> <style type="text/c ...
- 10本Java经典书目推荐
本文列出的10本书是我个人非常喜欢的Java书籍,当我有时间的时候,我就会将它们捧在手里阅读.甚至有些书我反复读过很多遍,每次重新读的时候总会有新的收获.因此这些书也是大部分Java程序员喜欢的书籍. ...
- Autodesk 招人了,开发顾问,感兴趣的或者有推荐的人扔简历过来啊
Autodesk ADN招人了,在上海,开发顾问, JD如下. 如果你感兴趣或者有人推荐,扔简历过来啊, daniel.du@autodesk.com,赶早不赶晚啊. Job Title: Dev ...
- 愚人节大狂欢 – ADN DevBlog谎话连篇友谊赛
愚人节过去了,你被捉弄了没有? :) 借这个机会,ADN的哥们儿也发泄狂欢了一把,我们4月1号当天在ADN DevBlog上发了一堆谎话连篇的blog,没有一个说实话的,哈哈.这是我们team内部进行 ...