主要内容:GPG加密解密的基本操作与少量应用。

  • 简介
  • 安装
  • 生成密钥操作过程
  • 对密钥的一些操作
    • 查看密钥
    • 导出密钥
    • 导入密钥
    • 注销密钥
    • 删除密钥
    • 编辑密钥
      • 签名
      • 修改密码
      • 等……
  • 加密文件
  • 解密文件
  • 一些参考

简介

GPG——GnuPG,是一种非对称密钥加密工具软件,主要用于加密解密,进行数字签名等。GPG可以生成用于加密解密、进行数字签名、数据指纹的非对称密钥。

安装

目前UBUNTU默认已经安装了GPG,编译安装可参考中文版Howto中的安装一节。注意国际版和美国版的区别。

生成密钥操作过程

生成密钥的命令是gpg –gen-key,下面是一个gpg –gen-key执行的过程,会夹杂说明文字,并跳过一部分不重要的提示信息,来说明密钥生成的过程:

gpg --gen-key
……
请选择您要使用的密钥种类:(1) RSA and RSA (default)(2) DSA and Elgamal(3) DSA (仅用于签名)(4) RSA (仅用于签名)
您的选择?

可以选择不同的加密算法,以及用途。以前默认使用的是DSA算法,目前变成了RSA。这次选择默认。

RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)

密钥长度/尺寸越长,越不易破解,但也需要更多的处理过程,因而可能处理的更慢。此处默认值是2048。此值已经与HOWTO中不太一样了,更长了,DSA密钥的长度范围也变成了1024-3072之间。这是个“泄露年龄的问题”。

请设定这把密钥的有效期限。0 = 密钥永不过期<n>  = 密钥在 n 天后过期<n>w = 密钥在 n 周后过期<n>m = 密钥在 n 月后过期<n>y = 密钥在 n 年后过期
……

密钥有效期,不用解释。

您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”真实姓名: xxx
电子邮件地址: xxx@sina.com

这个标识会作为以后维护密钥的标志,如查询,导入导出,销毁等操作,将以此为UID进行检索确认对只个密钥进行操作。

您需要一个密码来保护您的私钥。

输入一个密码,这样在使用密钥时,会要求输入密码,正确后才能使用密钥,这是第二重保护。 可以不输入密码,以用于一些特殊用途,不过一般情况下,还是有它比较好,只是必须记好,别忘了。

我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要177字节)
....+++++随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要155字节)
....................+++++

这时系统开始生成密钥,这期间需要有足够的操作以在内存中生成随机数。所以,去干点别的,直到密钥生成完毕,但不要离开喝茶。

gpg: 密钥 375B9788 被标记为绝对信任
公钥和私钥已经生成并经签名。
……
sub   4096R/107FE36C 2014-12-13

至此密钥生成完成。

对密钥的一些操作

查看密钥

$ gpg --list-keys
/home/pangyi/.gnupg/pubring.gpg
-------------------------------
pub   4096R/375B9788 2014-12-13
uid                  xxx (xxxxx) <xxx@sina.com>
sub   4096R/107FE36C 2014-12-13pub   3072D/9D4F5F01 2014-12-14
uid                  uidfile (xxx) <xxx@sina.com>
sub   3072g/6D72E230 2014-12-14

可以看到密钥的UID。

查看密钥签名信息使用gpg –list-sigs,查看密钥指纹信息使用gpg –fingerprint

查看私钥信息:

gpg --list-secret-keys
/home/pangyi/.gnupg/secring.gpg
-------------------------------
sec   4096R/375B9788 2014-12-13
uid                  xxx (xxxxx) <xxx@sina.com>
ssb   4096R/107FE36C 2014-12-13sec   3072D/9D4F5F01 2014-12-14
uid                  uidfile (xxx) <xxx@sina.com>
ssb   3072g/6D72E230 2014-12-14

导出密钥

gpg –export 用于导出密钥公钥。当有多个密钥时,需要指定UID或sec处的标识,输入的UID不必完整,能唯一标识就能输出密钥。但用UID有可能会同时输出多个密钥来,不如使用sec好。

密钥会输出到标准输出,可以重定向到文件保存。

导入密钥

未测试,使用gpg –import [Filename]导入公钥,如果不指定文件则从标准输入导入。

注销密钥

未测试,使用gpg –gen-revoke注销,需要用到密钥密码

删除密钥

未测试,gpg –delete-key

编辑密钥

gpg –edit-key是编辑密钥的指令,它能:

签名

没有导入的密钥,无法测试,本地生成的已经签过:gpg –edit-key UID sign

修改密码

未测试,gpg –edit-key UID passwd

等……

加密文件

加密一个文件,使用“gpg -e -r UID 文件名”来完成。加密后会生成一个原文件名.gpg的文件。

解密文件

解密文件的操作如下:

$ gpg -d -r uidfile test.gpg
gpg: 由 3072 位的 ELG-E 密钥加密,钥匙号为 6D72E230、生成于 2014-12-14“uidfile (xxx) <xxx@sina.com>”
test

除前两行显示外的内容是GPG显示到标准输出的内容。它是解密后文件的内容。可以将它重定向生成文件获取解密的文件。可以看到,加密前文件的内容是test。

不知道是不是因为输出内容中有到非标准输出的内容,虽然进程的返回结果是0,但在expect这类脚本语言中会出现报错,无法正常执行。

如果密钥生成时设置了密码,在解密时会提示输入,如果输入不正解是无法解密的。

在UBUNTU环境中,如果输入过一次密码,那么之后都不用再输入,直到系统重新启动。

一些参考

由于应用更新等原因,网络上的信息需要“领会精神”,要看最准确的参考文档,还是要看最新的官方文档或man帮助。以下是一些中文的参考文章:

http://www.linuxfly.org/post/274/

https://www.gnupg.org/howtos/zh/GPGMiniHowto-1.html <p class=’post-footer’> 原文链接地址: http://pangyi.github.io/blog/20150103/gpgjia-mi-jie-mi-yu-shi-ji-ying-yong/
written by PangYi  posted at http://pangyi.github.io </p>

转载于:https://www.cnblogs.com/maoxiong/p/4199743.html

GPG加密解密与实际应用相关推荐

  1. 基于JAVA实现GPG加密解密(Windows+java两种方式)

    最近业务上遇到一个很棘手的问题,客户要求在调用他们的时候要对报文进行加密解密,然后方式就是用pgp的方式进行加密解密,相信有很多小伙伴和我一样刚开始看到这个pgp(或者gpg)加密都是一脸懵,啥玩意儿 ...

  2. linux加密压缩文件gpg,linux文件--GPG 加密解密

    引用 # gpg --gen-key gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc. This program ...

  3. java公钥加密私钥解密过程_GPG加密解密过程

    GPG加密解密过程 一.Linux系统下 1.安装 yum安装 [root@POC-ORACLE ~]# yum install gnupg 下载安装包安装 https://www.gnupg.org ...

  4. gpg加密命令 linux_使用 GPG 加密和解密文件

    目标:使用 GPG 加密文件 发行版:适用于任何发行版 要求:安装了 GPG 的 Linux 或者拥有 root 权限来安装它. 难度:简单 约定: # - 需要使用 root 权限来执行指定命令,可 ...

  5. dsa签名 linux_linux SElinux防护 加密解密 gpg签名与认证

    SElinux Security-Enhanced Linux 由美国国家安全局主导开发 一套强化linux安全的mac扩展模块 selinux的运作机制: 集成到linux内核上(2.6及以上) 操 ...

  6. 使用 GPG 加密和解密文件

    目标:使用 GPG 加密文件 发行版:适用于任何发行版 要求:安装了 GPG 的 Linux 或者拥有 root 权限来安装它. 难度:简单 约定: # - 需要使用 root 权限来执行指定命令,可 ...

  7. 加密与解密的基本概念--GPG加密工具的使用

    加密与解密 信息传递中的风险:电脑黑客,流量失控,开发人员,高管习惯,商业间谍,合作伙伴,离职人员,出差人员等等方面. 什么是加密与解密 加密:发送方发送信息之前进行加密发送密文 解密:接收方接收密文 ...

  8. linux gpg加密文件夹,如何使用 GPG 加解密文件

    目标:使用 GPG 加密文件 发行版:适用于任何发行版 要求:安装了 GPG 的 Linux 或者拥有 root 权限来安装它. 难度:简单 约定: # - 需要使用 root 权限来执行指定命令,可 ...

  9. linux 怎么不检查gpg,如何在Linux上使用GPG加密和解密文件 | MOS86

    如何在Linux上使用GPG加密和解密文件... GnuPrivacy Guard (GPG) allows you to securely encrypt files so that only th ...

最新文章

  1. javascript-对混合字母/数字数组进行排序
  2. python 删除 csv 文件的行
  3. 香港科技大学谢知遥教授实验组招收机器学习全奖博士生
  4. python读取文本并且替换_lin如何读取和替换python行文件中的文本
  5. Eclipse和MyEclipse相关的快捷键
  6. CodeForces - 1301D Time to Run(构造+模拟)
  7. struct类型重定义 不同的基类型_C++构造数据类型
  8. LeetCode 1160. 拼写单词
  9. php操作memcache缓存基本方法
  10. 使用Netapp与windows server 2012搭建 iSNS服务器
  11. vue map遍历_vue中内嵌百度地图
  12. Project Euler Problem 25 1000-digit Fibonacci number
  13. 知乎万赞:熬夜整理出的软件测试面试题大全(2021最新)
  14. ps4手柄驱动linux,GeForce 344.11正式版驱动:支持GTX 980/970,集成DSR选项
  15. 2010世界财富排行榜
  16. 第七届 Sky Hackathon 笔记集合贴
  17. jacob操作word增加表格 行列
  18. 太赞了!推荐4个开源电商系统,不用重复造轮子了!
  19. 6大中文分词工具测试比较
  20. 三维重建 几何方法 深度学习_三维重建 3D reconstruction 有哪些实用算法?

热门文章

  1. C 语言实现快速排序
  2. uploadify使用详解
  3. php javaee,javaee与php的区别是什么
  4. 【数论】 质数知识总结(质数判断、筛选、质因子分解、互质)
  5. 美军解密“人机融合”计划,“超级士兵”或于2050年进入战场!|硅谷科技前沿周报...
  6. Linux 命令 ls 超详细讲解
  7. signature=62a94db18a1c22c5e92df335032a67cf,Print Cradle For Retaining Pagewidth Print Cartridge
  8. 几种常见的CSS布局-- 双飞翼布局
  9. nfs-ganesha rados_ng恢复原理分析
  10. isc-dhcp 自定义option 配置, option 43, option 60