浅谈 GPG

之前使用了一会儿的 gpg,这里聊聊这一个加密工具吧。

一、什么是 GPG

GPG 全称 GnuPG,谈到 GPG,就要先说说 PGP:

PGP 是一套用于消息加密、验证的应用程序,采用IDEA的散列算法作为加密与验证之用。

1991 年 Phil Zimmermann 在互联网上免费发布 PGP。

浅谈 GPG

而 GPG 则是一款用来替代 PGP 的软件。

GnuPG 依照由 IETF 订定的 OpenPGP 技术标准设计。GnuPG 用于加密、数字签名及产生非对称匙对。

二、工作原理

一张图!!!

浅谈 GPG

三、安装

在 OSX 上安装 GPG 非常简单,在已经有了 homebrew 之后,只需要在 terminal 中输入:

  1. brew install gpg

如果你是 Linux 用户或是没有 homebrew 也不需要担心,可以自行编译:

在这里下载他的源码:https://www.gnupg.org/download/index.en.html

然后:

  1. ./configure
  2. make && make install

四、使用

1.生成一个密钥

gpg --gen-key 可以生成一个密钥。

之后会需要输入密钥长度之类,系统会自动生成一个随机数,在生成随机数之时,你需要做一些动作,比如移动鼠标键盘,来增加 seed 的熵。

2.密钥管理

gpg --list-keys 可以列出所有的密钥。

终端会显示所有的密钥。

3.上传公钥

公钥服务器是网络上专门储存用户公钥的服务器。send-keys 参数可以将公钥上传到服务器。

  1. gpg --send-keys [User ID] --keyserver hkp://subkeys.pgp.net

使用上面的命令,你的公钥就被传到了服务器 subkeys.pgp.net,然后通过交换机制,所有的公钥服务器最终都会包含你的公钥。

由于公钥服务器没有检查机制,任何人都可以用你的名义上传公钥,所以没有办法保证服务器上的公钥的可靠性。通常,你可以在网站上公布一个公钥指纹,让其他人核对下载到的公钥是否为真。fingerprint 参数生成公钥指纹。

  1. gpg --fingerprint [用户ID]

4.加密与解密

现在我们要对  kyeremal.in 这个文件进行加密,encrypt 参数用于加密。

  1. gpg --recipient [用户ID] --output kyeremal.out --encrypt kyeremal.in

recipient 参数指定接收者的公钥,output 参数指定加密后的文件名,encrypt 参数指定源文件。运行上面的命令后,kyeremal.out 就是已加密的文件,可以把它发给对方。

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

  1. gpg --decrypt demo.out --output demo.sr

decrypt 参数指定需要解密的文件,output 参数指定解密后生成的文件。运行上面的命令,kyeremal.sr 就是解密后的文件。

解密的结果会直接在标准输出流中打印。

5.签名与验证签名

数字签名是指,有时候,我们不需要对文件加密,只需要确保这个文件是我本人发出的,sign 参数就是用来进行签名的。

  1. gpg --sign kyeremal.txt

运行上面的命令后,当前目录下生成 kyeremal.txt.gpg 文件,这就是签名后的文件。这个文件默认采用二进制储存,如果想生成 ASCII 码的签名文件,可以使用 clearsign 参数。

而验证签名的方法也很简单:

  1. gpg --verify kyeremal.txt.asc kyeremal.txt

参考文档

如果我的文章对您有帮助,请我喝杯咖啡吧~

支付宝转账打赏⬆️

微信钱包转账打赏⬆️

    A+
发布日期:2017年04月13日  所属分类:密码学
标签:

目前评论:2   其中:访客  2   博主  0

  1. 我赚啦 2

    闲着没事,随便逛逛,心静自然凉。

  2. hanjian 0

    支持,只有支持才是访问博客的正确方式!

评论加载中...

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: