0.参考


GnuPG MiniHOWTO

1.开始探索


环境如下:

  • $ gpg --version
  • gpg (GnuPG) 2.2.3
  • libgcrypt 1.8.1
  • Copyright (C) 2017 Free Software Foundation, Inc.
  • License GPLv3+: GNU GPL version 3 or later <https://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: /home/archie/.gnupg
  • 支持的算法:
  • 公钥:RSA, ELG, DSA, ECDH, ECDSA, EDDSA
  • 对称加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
  • TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
  • 散列:SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
  • 压缩:不压缩, ZIP, ZLIB, BZIP2

建立一个测试文件test.db

首先创建自己的密钥,这里选择RSA、4096位的密钥长度以及密码永不过期

  • $ gpg --full-gen-key
  • gpg (GnuPG) 2.2.3; Copyright (C) 2017 Free Software Foundation, Inc.
  • This is free software: you are free to change and redistribute it.
  • There is NO WARRANTY, to the extent permitted by law.
  • 请选择您要使用的密钥种类:
  • (1) RSA and RSA (default)
  • (2) DSA and Elgamal
  • (3) DSA (仅用于签名)
  • (4) RSA (仅用于签名)
  • 您的选择? 1
  • RSA 密钥长度应在 1024 位与 4096 位之间。
  • 您想要用多大的密钥尺寸?(2048)4096
  • 您所要求的密钥尺寸是 4096 位
  • 请设定这把密钥的有效期限。
  • 0 = 密钥永不过期
  • <n> = 密钥在 n 天后过期
  • <n>w = 密钥在 n 周后过期
  • <n>m = 密钥在 n 月后过期
  • <n>y = 密钥在 n 年后过期
  • 密钥的有效期限是?(0) 0
  • 密钥永远不会过期
  • 以上正确吗?(y/n)y

接下来是输入姓名、注释和邮箱,就不贴了。

然后提示输入passphrase(密码)来保护你的私钥,接下来等待一小会就好了

  • 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
  • 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
  • gpg: 密钥 B**************C 被标记为绝对信任
  • gpg: directory '/home/xxxxxx/.gnupg/openpgp-revocs.d' created
  • gpg: revocation certificate stored as '/home/xxxxxx/.gnupg/openpgp-revocs.d/3**************************************C.rev'
  • 公钥和私钥已经生成并经签名。
  • pub rsa4096 2017-12-22 [SC]
  • 3**************************************C
  • uid C********u (xx) <xxx@xxx.com>
  • sub rsa4096 2017-12-22 [E]

生成一张撤销证书

  • gpg --gen-revoke B074F9CB184D7B2C
  • gpg --gen-revoke B**************C
  • sec rsa4096/B**************C 2017-12-22 C********u (xx) <xxx@xxx.com>
  • 要为这把密钥建立一份吊销证书吗?(y/N)y
  • 请选择吊销的原因:
  • 0 = 未指定原因
  • 1 = 密钥已泄漏
  • 2 = 密钥被替换
  • 3 = 密钥不再使用
  • Q = 取消
  • (也许您会想要在这里选择 1)
  • 您的决定是什么?0
  • 请输入描述(可选);以空白行结束:
  • > future use
  • >
  • 吊销原因:未指定原因
  • future use
  • 这样可以吗? (y/N)y
  • 已强行使用 ASCII 封装过的输出。
  • -----BEGIN PGP PUBLIC KEY BLOCK-----
  • Comment: This is a revocation certificate
  • /*
  • 这里会看到很多字母和数字
  • */
  • -----END PGP PUBLIC KEY BLOCK-----
  • 已建立吊销证书。
  • 请把这个文件转移到一个可隐藏起来的介质(如软盘)上;如果坏人能够取得这
  • 份证书的话,那么他就能让您的密钥无法继续使用。把这份凭证打印出来再藏
  • 到安全的地方也是很好的方法,以免您的保存媒体损毁而无法读取。但是千万
  • 小心:您的机器上的打印系统可能会在打印过程中把这些数据临时在某个其他
  • 人也能够看得到的地方!

因为是本地的密码文件,所以就不要上传公钥啦。那么接下来就对test.db加解密吧:

  • gpg --recipient xxx@xxx.com --output 1.db --encrypt test.db

--recipient指定接受者,这里的接受者是自己。

解密也很简单:

  • $ gpg --output 2.db --decrypt 1.db

就得到加密后的文件了。