GPG加密解密与实际应用

主要内容: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) <[email protected]>”

真实姓名: xxx
电子邮件地址: [email protected]

这个标识会作为以后维护密钥的标志,如查询,导入导出,销毁等操作,将以此为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) <[email protected]>
sub   4096R/107FE36C 2014-12-13

pub   3072D/9D4F5F01 2014-12-14
uid                  uidfile (xxx) <[email protected]>
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) <[email protected]>
ssb   4096R/107FE36C 2014-12-13

sec   3072D/9D4F5F01 2014-12-14
uid                  uidfile (xxx) <[email protected]>
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) <[email protected]>”
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>

时间: 2024-11-08 19:08:20

GPG加密解密与实际应用的相关文章

小工具之gpg加密解密

一.使用gpg实现对称加密 a机器:gpg -c f1.txt           <=== -c对f1.txt加密 加密完后会生成一个f1.txt.gpg的文件 scp f1.txt.gpg b_ip:           <=== 使用scp把加密的文件传到B机器 b机器:gpg -o f1.txt -d f1.txt.gpg    <=== -o指定输出的文件,-d解密 二.使用gpg工具实现非对称加密 过程:a机器拿b机器的公钥进行加密,加密完文件传给b机器,b机器拿自己的私钥进

加密,gpg加密,ssh三种转发,openssl,pam 题目

加密,gpg加密,ssh三种转发,openssl,pam 一.仅开放本机两个IP地址中的一个地址172.16.0.X上绑定的sshd和vsftpd服务给172.16.0.0/16网络中除了 172.16.0.0/24网络中的主机之外的所有主机,但允许172.16.0.200访问,每次的用户访问都要记录于日志文件 中,注:其中X为学号 /etc/hosts.allow: sshd,vsftpd: 172.16.0.0/16 EXCEPT 172.16.0.0/24 EXCEPT 172.16.0.

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

一:使用 GPG 对数据进行加密解密签名 基本的工具使用 1. GPG 是GNUPG 免费开源的gpg加密工具,和同pgp兼容,pgp收费. 2. 在mac上使用https://gpgtools.org/ 下载安装之后,打开GPG Keychain mac程序, 可以点击新建创建一份自己的公钥和私钥,并把公钥上传到开源服务器上,各服务器间数据同步: 创建完成之后!我们对一个文件加密,解密,签名验证签名就可以了! 选中文件,右键,服务里面即可看到支持的工具 3. 在 windows 上使用 htt

gpg加密和解密

linux:gpg加密和解密 1 创建密钥 2 查看私钥 3 导出公钥 4 导出私钥 5 导入秘钥 5.1 公钥 6 公钥加密 7 私钥解密 创建密钥 gpg --gen-key 你要求输入一下内容,这些内容,基本英文,还是很好明白 [email protected]:~# gpg --gen-key gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you a

C#调用GPG命令进行加密解密文件操作

public void GPG() { string password = "1234567890"; System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd.exe"); psi.CreateNoWindow = true; psi.UseShellExecute = false; psi.RedirectStandardInput = true;

加密解密

在现代密码学中,加密方法大致可分为对称密钥加密(对称加密)和公开密钥加密(非对称加密). 一. 对称加密(Symmetric-key algorithm,或对等加密: Reciprocal cipher ) 对称加密,即加密和解密使用同一个密钥,或者知道一方密钥能够轻易计算出另一方密钥.其解密(decryption)算法等同于加密算法,也就是说,要还原对等加密的密文,套用加密同样的算法即可得到明文. 对称加密的速度比非对称加密快很多,在很多场合都需要对称加密. 对称加密又可分为分组密码(分组加密

烂泥:gpg加解密软件学习

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真正的密码. 为了不让其他人看到真正的邮箱密码,我们需要对其进行加密. 加密的方式是先把密码先写到一个文件A中,然后使用相关的加密软件对该文件A进行加密生成新的文件B.此时再删除文件A. 其他程序调用邮箱密码时,只调用加密后的文件B,同时对文件B进行解密. 加密我们使用的是gpg这个工具,下面我们来介

加密解密以及私有CA的实现

一.加密和解密 什么是加密:加密之前为明文,加密后是密文,将明文转换为密文的过程就是加密. 1. 对称加密 提供算法本身,加密和解密使用的是同一个密钥,用以保证数据的机密性.但安全性依赖于密钥,而非算法. 对称加密的优点是运算特别快:缺点是安全几乎全部依赖于密钥(算法基本上是公开的),当通信对象很多的时候,很难对密钥进行有效管理. 常见算法: DES(Data Encrption Standard):早期的算法,公开可以使用的,56bit密码长度,惨遭淘汰. 3DES:DES后DES再DES A

openssl 构建CA及加密解密

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.主要通过在传输层与应用层间构建SSL安全套接字层实现安全传输.可选择通过SSL层进行加密传输,需要事先建立通信通道的层 加密算法和协议: 1.对称加密 特性: 1.加密.解密使用同一密钥: 2.将明文分隔成固定大小的块,逐个进行加密: 缺陷: 1.       密钥过多: 2.        密码分发方式: 3.    常见算法: DES:Dat