我们平时都听过非对称加密,公钥和私钥,签名验证,但这些证书都是怎么得到的呢?本篇文章会解答这些问题。
背景介绍 加密的一个简单但又实用的任务就是发送加密电子邮件。多年来,为电子邮件进行加密的标准一直是PGP(Pretty Good Privacy)。程序员Phil Zimmermann特别为电子邮件的保密编写的PGP。 这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。 作为PGP的替代,如今已经有一个开放源代码的类似产品可供使用。GPG(Gnu Privacy Guard),它不包含专利算法,能够无限制的用于商业应用。 本文将会介绍文件加密,至于GPG的其他用途,比如邮件加密,请参考这个网站https://help.ubuntu.com
安装 本人使用mac电脑,因此使用brew安装的,很简单,打开终端,输入brew install gpg就行了,至于其他的平台,可以自行搜索。
1 2 3 4 5 bogon:~ XXXX$ brew install gpg ==> Downloading https://homebrew.bintray.com/bottles/gnupg-1.4.20.el_capitan.bot ######################################################################## 100.0% ==> Pouring gnupg-1.4.20.el_capitan.bottle.tar.gz ? /usr/local/Cellar/gnupg/1.4.20: 53 files, 5.4M 安装完成后,键入命令gpg --help:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 bogon:~ XXXX$ gpg --help gpg (GnuPG) 1.4.20 Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: ~/.gnupg 支持的算法: 公钥:RSA, RSA-E, RSA-S, ELG-E, DSA 对称加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 压缩:不压缩, ZIP, ZLIB, BZIP2 语法:gpg [选项] [文件名] 签名、检查、加密或解密 默认的操作依输入数据而定 指令: -s, --sign [文件名] 生成一份签名 --clearsign [文件名] 生成一份明文签名 -b, --detach-sign 生成一份分离的签名 -e, --encrypt 加密数据 -c, --symmetric 仅使用对称加密 -d, --decrypt 解密数据(默认) --verify 验证签名 --list-keys 列出密钥 --list-sigs 列出密钥和签名 --check-sigs 列出并检查密钥签名 --fingerprint 列出密钥和指纹 -K, --list-secret-keys 列出私钥 --gen-key 生成一副新的密钥对 --delete-keys 从公钥钥匙环里删除密钥 --delete-secret-keys 从私钥钥匙环里删除密钥 --sign-key 为某把密钥添加签名 --lsign-key 为某把密钥添加本地签名 --edit-key 编辑某把密钥或为其添加签名 --gen-revoke 生成一份吊销证书 --export 导出密钥 --send-keys 把密钥导出到某个公钥服务器上 --recv-keys 从公钥服务器上导入密钥 --search-keys 在公钥服务器上搜寻密钥 --refresh-keys 从公钥服务器更新所有的本地密钥 --import 导入/合并密钥 --card-status 打印智能卡状态 --card-edit 更改智能卡上的数据 --change-pin 更改智能卡的 PIN --update-trustdb 更新信任度数据库 --print-md 算法 [文件] 使用指定的散列算法打印报文散列值 选项: -a, --armor 输出经 ASCII 封装 -r, --recipient 某甲 为收件者“某甲”加密 -u, --local-user 使用这个用户标识来签名或解密 -z N 设定压缩等级为 N (0 表示不压缩) --textmode 使用标准的文本模式 -o, --output 指定输出文件 -v, --verbose 详细模式 -n, --dry-run 不做任何改变 -i, --interactive 覆盖前先询问 --openpgp 行为严格遵循 OpenPGP 定义 --pgp2 生成与 PGP 2.x 兼容的报文 (请参考在线说明以获得所有命令和选项的完整清单) 范例: -se -r Bob [文件名] 为 Bob 这个收件人签名及加密 --clearsign [文件名] 做出明文签名 --detach-sign [文件名] 做出分离式签名 --list-keys [某甲] 显示密钥 --fingerprint [某甲] 显示指纹 请向 <gnupg-bugs@gnu.org> 报告程序缺陷。 请向 <i18n-zh@googlegroups.com> 反映简体中文翻译的问题。 这些帮助信息非常有用,下边演示的很多功能也是基于上边这些参数的。这里把他们列出来,方便在使用的时候查询。 如果能够显示上边的信息,说明GPG安装成功了
...